当前位置:数据库 > SQLServer >>

sqlserver 包含一个时间区间的存储过程如何写

我有一个表(A)结构,字段有id,开始时间,结束时间。 假设有条数据为 "001" 2010/9/1 2012/9/4 怎么写存储过程,让他输出为 "001" 2012/9/1 "001" 2012/9/2 "001" 2012/9/3 "001" 2012/9/4
追问:你理解错我的问题了吧
答案:Create Proc PrintDate
@id varchar(10)
as
Begin
Declare @startDate datetime
Declare @endDate datetime
Declare @tempDate varchar(15) 
Create Table #t --临时表
(
Id varchar(10),
dtime varchar(15)
)
Select Top 1 @startDate=convert(datetime,开始时间),@endDate=convert(datetime,结束时间) From 表 Where id=@id
While @startDate<=@endDate
Begin
Set @startDate=dateAdd(d,1,@startDate)
Set @tempDate=convert(varchar,@startDate,111)
Insert Into #t(id,dTime) values(@id,@tempDate)
End
Select * From #t
End
-- 执行: PrintDate '001'
其他:create proc ps_test
@datetime1 datetime
@datetime2 datetime
as
select *from biao a
where 开始时间 between datetime1 and datetime2  --这里的时间应该为同一个栏位才可以
 
go
--exec ps_test '2012-09-01','2012-09-04' 在存储过程中,取出开始时间、结束时间
 
然后以天为单位进行循环,并输出日期串 create PROCEDURE ps_test
declare @id varchar(50)
as
begin
   declare @from_date datetime
   declare @to_date datetime
   create table #tt_table (id,output_date)
   select @from_date  = 开始时间, @to_date = 结束时间
   from A
   where id = @id
   while(@from_date <= @to_date)
   begin
      insert into #tt_table(id,output_date)
      values( @id,@from_date)
 
      DATEADD(day,1,@from_date)
   end
   select id, output_date
   from #tt_table
 end
go ----创建
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[sp_a] 
 @id nvarchar(10)
AS
BEGIN
 SET NOCOUNT ON;
    declare @start smalldatetime
    declare @end smalldatetime
    declare @temp smalldatetime
    declare @t table(id char(3),tm smalldatetime)
 SELECT top 1 @start=开始时间,@end=结束时间 from A where id=@id
    set @temp=@start
    while @temp<=@end
    Begin
      Insert Into @t(id,tm) values(@id,@temp)
      Set @temp=dateAdd(d,1,@temp)
    End
    select * from @t
END
 
-----执行
DECLARE @id nvarchar(10)
set @id='001'
EXECUTE [sp_a] @id
 
 
----结果
001 2010-09-01 00:00:00
001 2010-09-02 00:00:00
001 2010-09-03 00:00:00
001 2010-09-04 00:00:00

上一个:求sqlserver高手指导
下一个:sqlserver2008中资源等待。

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,