我有一张桌子,我在其中存储日期和其他信息。
我想显示未存储在表格中的日期记录。
例如..我有约会01/01/2012[dd/mm/yyyy]
,03/01/2012
,06/01/2012
。
我想显示日期02/01/2012
,04/05/2012
,05/01/2012.
请在 SQLServer2008
中查询答案 0 :(得分:0)
答案 1 :(得分:0)
;WITH MYCTE AS
(
SELECT CAST('1900-01-01' AS DATETIME) DateValue
UNION ALL
SELECT DateValue + 1
FROM MYCTE
WHERE DateValue + 1 < '3550-12-31'
)
SELECT DateValue, B.SomeColumn
FROM MYCTE A
LEFT JOIN MyTable B ON A.DateValue = B.DateValue
OPTION (MAXRECURSION 0)
我从here得到了日期范围cte(生成一个250000行的表需要4秒)
答案 2 :(得分:0)
此代码显示表格中缺少的2011年所有日期:
create table #dates (d datetime);
declare @start_period datetime;
set @start_period='01.01.2011';
declare @end_period datetime;
set @end_period='01.01.2012';
declare @d datetime;
set @d=@start_period
while(@d<@end_period)
begin
insert into #dates (d) values (@d)
SET @d=@d+1
end
select d from #dates where d not in (select <date> from <your_table>)