【发布时间】:2016-11-20 12:36:19
【问题描述】:
这是桌子:
+----+-----------+------------+----------+
| id | id_sensor | start_time | end_time |
+----+-----------+------------+----------+
| 1 | 12 | 21:15:00 | 02:45:00 |
| 2 | 7 | 00:00:00 | 23:15:00 |
| 3 | 5 | 04:30:00 | 16:30:00 |
+----+-----------+------------+----------+
我需要获取 PHP 通过的特定时间(例如 01:00:00)之间的记录。 start_time 和 end_time 是 UTC 中的 TIME 字段,我通过 php 传递到查询时间,注意,在 php 中从 user_timezone 转换为 UTC。
SELECT * FROM test WHERE TIME('01:00:00') BETWEEN start_time AND end_time;
查询只返回记录 id 2,而不是 1。在这种情况下,我需要两者(对于 id 1,结束时间当然是第二天)。
当然,如果我们查找 TIME('01:00:00'),我们不需要需要 id 3。
谢谢。
【问题讨论】:
-
那么确定范围包含这一天的逻辑是什么?因为如果您还没有日期字段,那么每个开始时间/结束时间对都会以一种或另一种方式匹配您的查询:D
-
@Johhny 这是我的预期行为。但是,如果你尝试我的 SQL,它不会得到 id 1....
-
你不懂我的评论。用您不希望返回的行来扩展您的问题。
-
@Johnny 刚刚完成!
-
现在我明白了你的问题,是的,我会接受建议的答案!