我创建了一个函数来获取接下来四周的日期。为此,我使用下面的代码。但是我不知道并且得到错误。
create function GetNextDays()
returns @somedays table
(
dayDate date
)
as
begin
declare @today date=getdate()
declare @index int=0
while @index<3
begin
insert @somedays(dayDate) values(@today)
set @index=@index+1;
DATEADD(DD,7,CAST(@today AS DATE))
end
return
end
我得到了这个错误:
'DATEADD'附近的语法不正确。
答案 0 :(得分:3)
你根本不应该使用循环。你应该使用数字或计数表。我在这里把它放在这里让你看。我有一个关于我的系统的视图,我可以使用这种类型的东西,而不需要循环。
WITH
E1(N) AS (select 1 from (values (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))dt(n)),
E2(N) AS (SELECT 1 FROM E1 a, E1 b), --10E+2 or 100 rows
E4(N) AS (SELECT 1 FROM E2 a, E2 b), --10E+4 or 10,000 rows max
cteTally(N) AS
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM E4
)
select DATEADD(day, N, cast(getdate() as DATE))
from cteTally
where N <= 3
答案 1 :(得分:1)
你应该在DateADD之前使用set。见下面的代码:
alter function GetNextDays()
returns @somedays table
(
dayDate date
)
as
begin
declare @today date=getdate()
declare @index int=0
while @index<3
begin
insert @somedays(dayDate) values(@today)
set @index=@index+1;
set @today= DATEADD(DD,7,cast(@today as date))
end
return
end
chnage this Line:
DATEADD(DD,7,CAST(@today AS DATE))
with:
set @today= DATEADD(DD,7,cast(@today as date))