SQL Server 請假時間校驗是否存在,請假表時間校驗是否存在已請假時間

問題:請假單開始時間與結束時間,進行校驗已請假事件表時間值。校驗開始時間與結束時間之間是否存在已請假的日期,而且返回最小時間值。sql

例如: 員工張三,工號s0001 提交請假申請單,開始時間2020-03-01,結束時間2020-04-15ide

            但願能夠校驗員工張三,在提交的請假申請單中,開始時間與結束時間之間是否存在已申請過的假期時間,而且返回最小值做爲提醒。
blog

            由於事實上員工張三,已經在2020-04-10 與2020-04-11已經請過假期了。但願能夠經過返回值進行提醒
事件


建立表已請假事件表C4 包含名字、工號、請假時間it

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
)

插入數據class

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

相關文章
相關標籤/搜索