【发布时间】:2017-02-03 17:54:00
【问题描述】:
我想将时间与时间范围进行比较,如果该特定时间在该时间范围内,那么它应该返回一条记录。
例如,表“A”有:
+-----------+------+-------------+-----------+
| User_Code | Name | Shift_Start | Shift_End |
+-----------+------+-------------+-----------+
| 1 | ABC | 04:01:00 | 11:00:00 |
| 2 | DEF | 11:01:00 | 20:00:00 |
| 3 | XYZ | 20:01:00 | 04:00:00 |
+-----------+------+-------------+-----------+
现在我想检查在这个特定日期时间是谁的班次:2016-09-26 02:51:59。 SQL 查询应返回User_Code = 3。 Shift_Start 和 Shift_End 的类型为 time。
我尝试将2016-09-26 02:51:59 转换为时间,然后使用between 和logical operator 与shift_start 和shift_end 进行比较,但我无法获得所需的结果。
这让我很困惑。自从我尝试提出解决方案以来已经一个小时了,但我无法这样做。尝试使用谷歌搜索,但那里也一无所获。任何帮助将不胜感激。使用 SQL Server 2012。
【问题讨论】:
-
如果您只想处理
TIME而不是DATETIME,将20:01:00 - 04:00:00 XYZ范围分成两个范围可能会让您的生活更轻松:00:00:00 - 04:00:00 XYZ和20:01:00 - 23:59:59 XYZ跨度> -
@paul,是的,但我真的不想改变数据库结构,但我同意这会让事情变得更容易。
标签: sql sql-server