簡體   English   中英

MySQL:在開始和結束時間之間獲取TIME('xx:yy:zz')的記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM