我需要在当前表中添加日期字段列。
我需要将Jan1到2018年12月31日添加到名为date的列中。
我尝试了以下查询,
Insert into [dbo].[Calendar] ([Date])
Values
Getdate()
它在getdate()附近引发语法错误。
请帮助我进行查询。
答案 0 :(得分:2)
您可以在下面使用递归cte尝试
DECLARE @startDt date='2018-01-01'
DECLARE @endtDt date='2018-12-31'
;WITH GetDates As
(
SELECT 1 AS [COUNTER], @startDt as [Date]
UNION ALL
SELECT [COUNTER] + 1, DATEADD(DAY,1,[Date])
FROM GetDates
WHERE [Date] < @endtDt
)
SELECT [DATE] FROM GetDates
OPTION (MAXRECURSION 0)
答案 1 :(得分:0)
将getdate()括在括号内。
Insert into [dbo].[Calendar] ([Date])
Values
(Getdate())
对于将Jan1添加到2018年12月31日,请使用以下代码
declare @startDt date='2018-01-01'
declare @endtDt date='2018-12-31'
while (@startDt<=@endtDt)
begin
Insert into [dbo].[Calendar] ([Date]) Values (@startDt)
set @startDt=dateadd(dd,1,@startDt)
end
答案 2 :(得分:0)
不使用递归Cte即可尝试
DECLARE @startDt date='2018-01-01'
DECLARE @endtDt date='2018-12-31'
SELECT DATEADD(DAY,Number,@startDt) AS RecurringDates
FROM Master.dbo.spt_values
WHERE [type] ='P'
AND DATEADD(DAY,Number,@startDt) BETWEEN @startDt AND @endtDt
ORDER BY 1