我有一个表格,每一行都有一个ID
,Date
和Value
列。我想要它,以便每次有人访问我的网站上的页面时,将运行一个存储过程,如果当天不存在,将在范围内的每一天插入一行。
日期范围是从2012年1月1日到当天(访问页面的那一天)之前的星期六。 <{1}}将自动生成,ID
字段将保持为空/空白。
例如,如果我今天访问了该页面,我希望在2012年1月1日至2012年3月3日之间的每一天都能在表格中记录一条记录。
答案 0 :(得分:3)
这可以获取所有尚未存在的日子,并排除上周六之后的行。
;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());
请注意,我认为你会重置&#34;一旦你的日历年结束了。