declare @Holiday table
(
ID int identity(1,1),
SDate DateTime,
EDate DateTime,
Remark varchar(30)
)
insert into @Holiday(SDate, EDate, Remark) values('2012-03-10', '2012-03-15', 'A')
--
insert into @Holiday(SDate, EDate, Remark) values('2012-04-01', '2012-04-04', 'B')
insert into @Holiday(SDate, EDate, Remark) values('2012-04-10', '2012-04-11', 'C')
insert into @Holiday(SDate, EDate, Remark) values('2012-04-28', '2012-05-01', 'D')
--
insert into @Holiday(SDate, EDate, Remark) values('2012-05-05', '2012-05-10', 'F')
-- 设定取日期范围
declare @SDate DateTime, @EDate DateTime
select @SDate = '2012-04-01', @EDate = '2012-04-30'
-- 取日期相交記錄(日期有效记录)
select
(case when @SDate >= SDate then @SDate else SDate end) as SDate, -- 开始日期取大
(case when @EDate <= EDate then @EDate else EDate end) as EDate, -- 结束日期取小
Remark
from @Holiday
where
(
(@SDate between SDate and EDate)
or
(@EDate between SDate and EDate)
or
(@SDate <= SDate and EDate <= @EDate)
)
本文介绍了一种使用SQL来查询指定日期范围内与节假日表中记录相交的有效日期的方法。通过定义临时表并插入特定节假日区间,演示了如何筛选出落在用户自定义日期范围内的节假日,并通过案例展示了日期比较和选取的实现细节。
58

被折叠的 条评论
为什么被折叠?



