これはテーブルです:私は、レコード(複数可)を取得する必要がありますのMySQL:レコードのどこTIMEを取得開始時刻と終了時刻の間( ':YY XX ZZ')
+----+-----------+------------+----------+
| 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 |
+----+-----------+------------+----------+
特定の時間(例えば01 :00:00)の間にPHPが渡されます。 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' )を探しているならば、我々はは3
はありがとうございIDを必要としない。
そして、その範囲がその日を包むのを知るロジックは何ですか?なぜなら、日付フィールドもなければ、開始時刻/終了時刻のそれぞれの組み合わせは、あなたのクエリ、いずれか他の方法と一致します:D – Johnny
@Johhnyこれは私の予想される動作でした。しかし、私のSQLを試してみると、ID 1を取得しません.... – sineverba
あなたは私のコメントを理解していません。返されたくない行で質問を拡張してください。 – Johnny