如何在表格中添加日期列

时间:2018-10-29 06:20:44

标签: sql sql-server

我需要在当前表中添加日期字段列。

我需要将Jan1到2018年12月31日添加到名为date的列中。

我尝试了以下查询,

 Insert into [dbo].[Calendar]  ([Date])
 Values
 Getdate()

它在getdate()附近引发语法错误。

请帮助我进行查询。

3 个答案:

答案 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