我有一个表,每一行都有一个
ID
、Date
和 Value
列。我希望这样,每次有人访问我的网站上的页面时,都会运行一个存储过程,该存储过程将在某个范围内的每一天插入一行(如果该天尚不存在)。
日期范围将从 01/01/2012 到当天(访问页面的当天)之前的星期六。
ID
将自动生成,并且 Value
字段将保持 NULL/空白。
例如,如果我今天访问该页面,我希望在表中记录 01/01/2012 到 03/03/2012 之间的每一天。
这将获取所有尚不存在的日期,并排除上周六之后的行。
;WITH d AS
(
SELECT TOP (366) d = DATEADD(DAY, ROW_NUMBER() OVER (ORDER BY object_id), '20111231')
FROM sys.all_columns
)
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());
请注意,我假设您会在日历年结束后“重置”此设置。