2010-10-23 65 views
3

這是我的表。我需要一個查詢,它返回指定時間的班次ID
如何獲取值?在SQL Server 2008中比較時間

shift_ID shift_From    shift_To 
1   2010-09-21 10:00:00.000 2010-09-21 18:10:00.000 
2   2010-09-21 20:00:00.000 2010-09-21 05:00:00.000 

假設我給02:00:00作爲輸入,我需要得到轉變ID作爲1。我怎麼能這樣做?

+0

有可能轉變他們? – anivas 2010-10-23 09:18:16

+0

@anivsa這裏提到的日期並不重要。該表中只有兩個條目。 – kbvishnu 2010-10-23 09:29:15

回答

3

嘗試:

SELECT shift_ID 
FROM time_shift 
WHERE 
DATEDIFF(hour, shift_From, shift_To) = 2 -- your input 

查看更多有關DATEDIFF on MSDN

第一個參數是你指定到DATETIFF(小時,分,秒)的時間部分。

如果您的輸入與02:00:00嚴格相同,您需要解析它以確定指定爲第一個參數的內容。


要確定做2種人之間的指定日期歸屬,用途:

SELECT shift_ID 
FROM time_shift 
WHERE 
    CAST(shift_From AS TIME) < CAST(@input AS TIME) 
AND 
    CAST(@input AS TIME) < CAST(shift_To AS TIME) 
-- you can specify operators inclusiveness, i.e. <= >= etc 
-- or 
CAST(@input AS TIME) BETWEEN (CAST(shift_From AS TIME), CAST(shift_To AS TIME)) 

查看你想要的所有的同時,更多的TIME on MSDN

在不同的日期
+0

我需要檢查輸入時間是否在換班和換班之間。 DateDiff將返回轉換的持續時間 – kbvishnu 2010-10-23 10:43:15

+0

@Hari:查看我更新的帖子 – abatishchev 2010-10-23 10:55:47

+0

@abatishchev在這裏,我想比較沒有考慮date.Your查詢沒有返回任何東西:( – kbvishnu 2010-10-23 11:18:52