取日期相交記錄

本文介绍了一种使用SQL来查询指定日期范围内与节假日表中记录相交的有效日期的方法。通过定义临时表并插入特定节假日区间,演示了如何筛选出落在用户自定义日期范围内的节假日,并通过案例展示了日期比较和选取的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)
 )


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值