打印从年初到最后的所有日子

时间:2017-12-01 09:28:46

标签: sql date stored-procedures printing sql-date-functions

我的下面的代码没有正确执行。 请帮我打印错误的地方。

alter procedure dbo.display
as
begin
declare @start date
declare @end date


set @start=DATEADD(yy,DATEDIFF(yy,0,getdate()),0)
set @end =DATEADD(yy,DATEDIFF(yy,0,getdate())+1,-1)

while(@start>@end)
begin
select @start
end
set @start=DATEADD(DD,1,@start)
end

1 个答案:

答案 0 :(得分:1)

您的代码中存在两个问题:

  • while条件(应为<,而不是>
  • 循环外的set

请尝试以下代码:

declare @start date
declare @end date

set @start = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)
set @end = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) 

while(@start <= @end)
begin
    print @start
    set @start = DATEADD(DD,1,@start)
end

享受!