Sql server 2008 如何在表中插入2000年和2020年之间的所有日期和月份?
我在SQLServer2008中创建了一个名为time_range的表,其中包含列Sql server 2008 如何在表中插入2000年和2020年之间的所有日期和月份?,sql-server-2008,date,sql-insert,bulkinsert,bulk,Sql Server 2008,Date,Sql Insert,Bulkinsert,Bulk,我在SQLServer2008中创建了一个名为time_range的表,其中包含列 date ID, Month ID, year ID 如何将2000年到2020年的所有日期、月份、年份批量插入这些列?有什么简单的查询可以做到这一点吗 请帮忙,谢谢 发件人: 1/1/2000 | January |2000 致: 可以使用递归CTE执行以下操作: with cte (dateId) as ( select cast('2000-01-01' as date) unio
date ID, Month ID, year ID
如何将2000年到2020年的所有日期、月份、年份批量插入这些列?有什么简单的查询可以做到这一点吗
请帮忙,谢谢
发件人:
1/1/2000 | January |2000
致:
可以使用递归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
您可以使用此选项插入到其他表中您可以使用递归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
你可以用它来插入其他表似乎你根本不想尝试这样做。。。。请上传你到现在为止所做的事情…看起来你甚至都不想尝试去做。。。。请上传你到现在为止所做的…谢谢你的帮助。我是一个初学者,我对CTE不太了解。再次感谢您的帮助。此外,我在插入新表时遇到了问题操作数类型冲突:date与int不兼容,但我通过更改相应列的变量类型解决了问题,现在新表拥有了所有数据。当然:再次感谢。GurV感谢您的帮助帮助我是一个初学者,我对CTE不太了解。再次感谢您的帮助。此外,我在插入新表时遇到了问题操作数类型冲突:date与int不兼容,但我通过更改相应列的变量类型解决了问题,现在新表中有了所有数据。当然:再次感谢。