繁体   English   中英

如何在日期范围内每天插入一行?

[英]How can I insert a row for each day within a date range?

我有一张桌子,每一行都有一个IDDateValue列。 我希望这样做,以便每当有人访问我的网站上的页面时,将运行一个存储过程,该存储过程将在不存在该日的范围内每天插入一行。

日期范围是从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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM