问题:请假单开始时间与结束时间,进行校验已请假事件表时间值。校验开始时间与结束时间之间是否存在已请假的日期,并且返回最小时间值。
例如: 员工张三,工号s0001 提交请假申请单,开始时间2020-03-01,结束时间2020-04-15
希望可以校验员工张三,在提交的请假申请单中,开始时间与结束时间之间是否存在已申请过的假期时间,并且返回最小值作为提醒。
因为事实上员工张三,已经在2020-04-10 与2020-04-11已经请过假期了。希望可以通过返回值进行提醒
创建表已请假事件表C4 包含名字、工号、请假时间
CREATE TABLE c4( ID INT identity(1,1) NOT NULL PRIMARY KEY, name VARCHAR(50) NOT NULL, name_id VARCHAR(50) NOT NULL, SQ_date date not NULL )
插入数据
INSERT INTO c4(name,name_id,SQ_date) VALUES('李四','S0001','2020-04-10'), ('李四','S0001','2020-04-11'), ('张三','S0002','2020-04-10'), ('王五','S0003','2020-04-10')
设定查询变量 开始时间@startime、 结束时间@endtime、 工号@name_id
设置变量 @starttime 初始值 2020-03-01 设置变量 @endtime 初始值 2020-04-15 设置变量 @name_id初始值 s0001 查询包含在开始与结束时间内的最小值的时间 DECLARE @starttime date,@endtime date,@name_id VARCHAR(50) SET @starttime = '2020-03-01' SET @endtime = '2020-04-15' SET @name_id = 's0001' SELECT min(SQ_date) as 请假时间 FROM c4 WHERE (SQ_date BETWEEN @starttime AND @endtime) AND name_id = @name_id