Sql 在select查询中使用时间戳where子句时如何获取数据
我正在尝试使用select查询获取日期,该查询在WHERE子句中具有时间戳 我的数据表如下所示:Sql 在select查询中使用时间戳where子句时如何获取数据,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我正在尝试使用select查询获取日期,该查询在WHERE子句中具有时间戳 我的数据表如下所示: | startTime | endTime | TimeID ---------------------------------- | 07:00:00 | 15:00:00 | 1 | 15:00:00 | 23:00:00 | 2 | 23:00:00 | 07:00:00 | 3 -----------------------------
| startTime | endTime | TimeID
----------------------------------
| 07:00:00 | 15:00:00 | 1
| 15:00:00 | 23:00:00 | 2
| 23:00:00 | 07:00:00 | 3
---------------------------------
这是我的查询语句:
SELECT TimeID
FROM myTable
WHERE StartTime >= 'Current_TIME' AND EndTime < 'Current_TIME'
选择TimeID
从myTable
其中StartTime>=“当前时间”和EndTime<“当前时间”
如果时间在07:00到23:00之间,那么我得到的答案是正确的,否则我得不到
例如:
如果当前时间为02:00:00,则第一个条件为假,因为02不大于23,第二个条件为有效>02小于07
我尝试在WHEN和ISNULL时使用BETWEEN子句和use CASE,但在上面的场景中查询总是返回空的。这会起作用,但在性能方面不是最好的:
SELECT TimeID
FROM myTable
WHERE
(
(StartTime <= 'Current_TIME' AND EndTime > 'Current_TIME') or
(StartTime <= 'Current_TIME' AND StartTime > EndTime) or
(EndTime > 'Current_TIME' AND StartTime > EndTime)
)
选择TimeID
从myTable
哪里
(
(开始时间“当前时间”)或
(开始时间-结束时间)或
(结束时间>当前时间>开始时间>结束时间)
)
如果可能,最好将跨越午夜的行拆分为两个单独的行。是否可以将跨越午夜的行拆分为两个单独的行?最好的解决方案是使用时间数据类型,而不是尝试比较字符串值。谢谢,此解决方案非常好,我不能把午夜分成两行