在SQL Server 2008中比较时间

问题描述:

这是我的表。我需要一个查询,它返回指定时间的班次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

尝试:

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