[英]How can I insert a row for each day within a date range?
我有一张桌子,每一行都有一个ID
, Date
和Value
列。 我希望这样做,以便每当有人访问我的网站上的页面时,将运行一个存储过程,该存储过程将在不存在该日的范围内每天插入一行。
日期范围是从2012年1月1日到当天(访问页面的日期)之前的星期六。 ID
将自动生成,并且Value
字段将保持NULL /空白。
例如,如果我今天访问了该页面,则希望在表中记录从01/01/2012到2012/03/03的每一天。
这将获取尚不存在的所有日期,并排除上一个星期六之后的行。
;WITH d AS
(
SELECT TOP (366) d = DATEADD(DAY, ROW_NUMBER() OVER (ORDER BY object_id), '20111231')
FROM sys.all_objects
)
INSERT dbo.[a table]([Date])
SELECT d FROM d
WHERE d NOT IN (SELECT [Date] FROM dbo.[a table])
AND d <= DATEADD(DAY, 0-DATEPART(WEEKDAY, GETDATE()), GETDATE());
请注意,我假设一旦日历年结束,您将“重置”此设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.