我有一個表,由最初的便利店等的時間表結束時,一些結構類似獲取夜間兩個時間之間的時間以早上
| SCHEDULE_NAME | START_HOUR | END_HOUR |
| ------------- | ------------- | --------- |
| Morning Shift | 8:00 | 10:00 |
| Evening Shift | 13:00 | 17:00 |
| Night Shit | 22:00 | 2:00 |
所以我要驗證,如果一個小時的開始和結束之間小時,我有所有的時間作爲日期運行到這種類型的驗證函數中的表
DECLARE @HOUR time = '9:00'
IF @HOUR BETWEEN @START_HOUR AND @END_HOUR
SELECT 'IS BETWEEN'
ELSE
SELECT 'IS NOT'
所以它工作正常的時間表,其中其他(前兩種情況後,開始時間和結束時間是一個),但在第三種情況下,通宵計劃,因爲它認爲結束時間較低,所以失敗n個小時,這樣的情況下
DECLARE @HOUR time = '1:00'
-- Here START_HOUR is '22:00' AND END_HOUR is '2:00'
IF @HOUR BETWEEN @START_HOUR AND @END_HOUR
SELECT 'IS BETWEEN'
ELSE
SELECT 'IS NOT'
所以它返回IS NOT但應該考慮到,它是調度之間
以防萬一,沒有時間表結束和開始時間可以是相同的和我使用的SQL Server 2014
存儲倍日期時間? 如果是的話,你可以嘗試檢索數據的日期時間再上加入+1天END_HOUR萬一START_HOUR比END_HOUR更大。 – insilenzio
@insilenzio它們存儲時間,不DATETIME和DATEADD函數沒有工作 –