declare @a as datetime declare @b as datetime declare @c as datetime declare @d as datetime set @a = '2009-01-01' set @b = '2009-01-05'set @c = '2009-01-03' set @d = '2009-01-08'--临时表 select top 8000 identity(int,0,1) as id into # from syscolumns a,syscolumns bselect dt from ( select dateadd(day , n.id , @a) dt from # n where dateadd(day , n.id , @a) <= @b union all select dateadd(day , n.id , @c) dt from # n where dateadd(day , n.id , @c) <= @d ) t group by dt having count(*) > 1 order by dtdrop table # /* dt ------------------------------------------------------ 2009-01-03 00:00:00.000 2009-01-04 00:00:00.000 2009-01-05 00:00:00.000(所影响的行数为 3 行)*/
c<b and d>a 時 就會重疊的
declare @b as datetime
declare @c as datetime
declare @d as datetime
set @a = '2009-01-01'
set @b = '2009-01-05'set @c = '2009-01-03'
set @d = '2009-01-08'--临时表
select top 8000 identity(int,0,1) as id into # from syscolumns a,syscolumns bselect dt from
(
select dateadd(day , n.id , @a) dt from # n where dateadd(day , n.id , @a) <= @b
union all
select dateadd(day , n.id , @c) dt from # n where dateadd(day , n.id , @c) <= @d
) t
group by dt having count(*) > 1
order by dtdrop table #
/*
dt
------------------------------------------------------
2009-01-03 00:00:00.000
2009-01-04 00:00:00.000
2009-01-05 00:00:00.000(所影响的行数为 3 行)*/