我們正在爲員工休假的日期範圍選擇器SQL日期範圍
例如我將用戶2016年1月作爲一個例子,我們的系統從週日經過週六
如果員工從一月14日至20日需要一個假期,他們應該在日期範圍10-16和17-23也
我只是想不出如何寫一個SQL查詢,將其限定爲那些2個日期。
我有的是:
DECLARE @WeekRangeStart DATETIME ='2016/01/10';
DECLARE @WeekRangeEnd DATETIME = '2016/01/16';
SELECT [ID],
[EmpName],
[EmpType]
FROM Vacations
WHERE VacationStartDate >= @WeekRangeStart OR VacationEndDate >= @WeekRangeStart
--OUTPUT
--ALL DAYS BEFORE THIS WOULD BE TRUE...
--1/14/2016 >= 1/10/2016 TRUE
--1/20/2016 >= 1/10/2016 TRUE
-- NEXT WEEK
--1/14/2016 >= 1/17/2016 FALSE
--1/20/2016 >= 1/17/2016 TRUE
-- NEXT WEEK
--1/14/2016 >= 1/24/2016 FALSE
--1/20/2016 >= 1/24/2016 FALSE
--ALL DAYS AFTER THIS DAY WOULD BE FALSE...
,但這隻適用於對已通過的事情,但如果我是一個每天預定在三月,我會始終顯示在時間表,因爲我的開始日期會更大比今天。我應該如何限制它僅限於該範圍?
很確定DATEPART()函數是你在這裏需要的。 –
在WHERE子句是不正確你的範圍中的重疊的邏輯。看看這個問題: http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap – jrook