declare @d datetime
set @d='2005-1-1'
while year(@d)<2006
begin
 insert into tb_date(dDate) values(@d)
 set @d=dateadd(day,1,@d)
end

解决方案 »

  1.   

    create table #T(id int identity(1,1),dDate datetime)declare @t1 as datetime
    declare @t2 as datetime
    set @t1 = cast('2005-01-01' as datetime)
    set @t2 = cast('2005-12-31' as datetime)
    declare @i as int
    set @i= datediff(dd,@t1,@t2)
    while @i >= 1 
    begin
    insert into #T
                    values (@t1)
             set  @t1 = dateadd(day,1,@t1)
             set  @i =  @i - 1
    end
      

  2.   

    create   proc  listday  @year  char(4)
    as
    set  nocount  on
    declare  @begin  datetime, @end  datetime
    select  @begin=@year+'0101',  @end=@year+'1231'
    while @begin<=@end
    begin
             insert  tb_date  select  convert(varchar(10), @begin, 120)  
             set  @begin=dateadd(dd, 1, @begin)
    end
    select  *  from tb_date 
    GOexec listday  '2005'