![](/img/trans.png)
[英]MySQL Query to find record between start/end time within day of week
[英]MySQL: Get record where TIME('xx:yy:zz') between start and end time
這是表:
+----+-----------+------------+----------+
| 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。
謝謝。
我認為這是你想要的邏輯:
SELECT *
FROM test
WHERE (start_time < end_time AND TIME('01:00:00') BETWEEN start_time AND end_time) OR
(start_time > end_time AND TIME('01:00:00') NOT BETWEEN end_time AND start_time);
now()返回當前時間和日期。 您還可以使用curtime(),它僅返回當前時間。
順便說一下,我認為應該避免使用SELECT *(也許你只是為了這個例子使用它),恕我直言最好列出明確需要的字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.