如何将SQL生成的2020-07-01至2020-07-31日期列表插入table1?
将生成的日期列表插入到table1表的方法
你可以直接使用INSERT INTO ... SELECT语法,把CTE生成的日期结果插入到目标表table1中,具体修改后的代码如下:
declare @startdate date = '2020-07-01'; declare @enddate date = '2020-07-31'; with dates as ( select @startdate as orderdate union all select dateadd(dd, 1, orderdate) from dates where dateadd(dd, 1, orderdate) <= @enddate ) -- 将原SELECT语句替换为INSERT INTO,指定目标表和对应列 insert into table1 (你的日期列名) -- 替换为table1中实际存储日期的列名,比如orderdate select orderdate from dates option (maxrecursion 0); -- 当日期跨度超过100天时,需添加此选项解除递归次数限制
关键注意点:
- 确保
table1存在一个日期类型的列(如date或datetime),列名要与INSERT语句中指定的名称匹配;如果列名和CTE里的orderdate一致,可简化为insert into table1 select orderdate from dates ... - 若生成的日期范围超过100天,必须添加
option (maxrecursion 0),否则SQL Server会抛出递归次数超限的错误
内容的提问来源于stack exchange,提问作者Smith
相关产品推荐
相关产品推荐

