如何在2000年到2020年之间将所有日期和所有月份插入表格中?

问题描述:

我创建了一个在SQL Server 2008中称为time_range与列如何在2000年到2020年之间将所有日期和所有月份插入表格中?

date ID, Month ID, year ID 

我怎么能批量插入所有的日,月,年为这些列2000年至2020年的表?有没有简单的查询来做到这一点?

请提前帮助感谢。

来源:

1/1/2000 | January |2000 

TO:

31/12/2020| December | 2020 
+0

这似乎是你甚至不想尝试d o it ....请上传你到目前为止所做的... – etsa

您可以使用递归CTE做到这一点:

with cte (dateId) 
as (
    select cast('2000-01-01' as date) 

    union all 

    select dateadd(day, 1, dateId) 
    from cte 
    where dateId < cast('2020-12-31' as date) 
    ) 
select dateId, 
    datename(Month, dateId) as monthId, 
    year(dateId) as yearId 
from cte 
option (maxrecursion 0); -- to remove the recursion limit 

你可以用这个做插入到其他表

+0

GurV感谢您的帮助。我是一个初学者,我不太了解CTE感谢您的帮助。我也遇到了问题,而插入到新表“操作数类型冲突:日期与int不兼容”,但我能够解决它购买改变变量类型对于相应的列,现在新表具有所有数据。 – star

+0

当然:)再次感谢。 – star