2014-12-04 26 views
1

我有一个用于存储节省时间的表。它与下面的“day_shift(1)”和“night_shift(0)”相结合。如何将GETDATE()转换为只有时间忽略的日期,月份和年份

enter image description here

如果我把当前时间(使用GETDATE()函数)。 我需要知道当前时间是“日(1)”还是“夜(0)”。我的这样的查询。

SELECT [day_shift_flag] 
FROM [company_working_time] 
WHERE GETDATE() BETWEEN [start_time] AND[end_time] 

但它无法找到,因为从GETDATE()收到的日期是不是“1900-01-01” 如何比较一个唯一的一次,而忽略天,月,年。 我该怎么办?

+2

根据您的SQL Server的版本,有时间的数据类型,你可以使用来代替。 – 2014-12-04 04:49:24

回答

5

您可以将日期时间转换为时间数据类型。例如:

SELECT 
    [day_shift_flag] 
FROM [company_working_time] 
WHERE 
CAST(GETDATE() AS TIME) BETWEEN CAST([start_time] AS TIME) AND CAST([end_time] AS TIME) 
2

通过如下方式可以忽略的日,月,年

 SELECT [day_shift_flag] 
     FROM [company_working_time] 
     WHERE DatePart(HH,GETDATE()) BETWEEN DatePart(HH,[start_time]) AND DatePart(HH,[end_time]) 
相关问题