SQL Server 请假时间校验是否存在,请假表时间校验是否存在已请假时间

问题:请假单开始时间与结束时间,进行校验已请假事件表时间值。校验开始时间与结束时间之间是否存在已请假的日期,并且返回最小时间值。

例如: 员工张三,工号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

image.png

猜你喜欢

转载自blog.51cto.com/11728495/2487465
今日推荐