我有這個mysql表中有以下記錄。選擇給定的start_datetime和end_datetime的所有行
表名:gce_arena_surface_booking
+----+---------------------+---------------------+------------------+
| id | start_datetime | end_datetime | arena_surface_id |
+----+---------------------+---------------------+------------------+
| 1 | 2012-11-22 02:30:00 | 2012-11-22 05:00:00 | 2 |
| 2 | 2012-11-22 00:00:00 | 2012-11-22 02:30:00 | 2 |
| 3 | 2012-11-22 05:00:00 | 2012-11-22 08:00:00 | 2 |
| 4 | 2012-11-22 08:00:00 | 2012-11-22 11:00:00 | 2 |
| 5 | 2012-11-22 11:00:00 | 2012-11-22 17:00:00 | 2 |
| 6 | 2012-11-22 17:30:00 | 2012-11-22 22:00:00 | 2 |
| 7 | 2012-11-23 02:00:00 | 2012-11-23 18:00:00 | 2 |
+----+---------------------+---------------------+------------------+
我需要在給定的日期時間就知道了,如果預訂已經存在,我使用此查詢,以檢查是否給定start_datetime
任何預訂存在,end_datetime
SELECT
id, start_datetime, end_datetime, arena_surface_id
FROM
gce_arena_surface_booking
WHERE (
(start_datetime BETWEEN '2012-11-23 2:00' AND '2012-11-23 6:00') OR
(end_datetime BETWEEN '2012-11-23 2:00' AND '2012-11-23 6:00')
)
AND arena_surface_id = 2
以上查詢是給我的問題,例如,如果我有值的變化:
'2012-11-23 2:00' AND '2012-11-23 6:00'
到
'2012-11-23 2:30' AND '2012-11-23 6:00'
注意,我從2:00
改變了價值2:30
,它不返回我的任何結果,如果我這樣做,而參照上述記錄我希望它返回我的行ID爲7
,因爲我在2:00
和18:00
之間預訂的時間段,因此與02:00
和18:00
之間的時間匹配的任何給定值應該返回一行。
什麼是適當的MySQL查詢來處理我的問題?
這裏是鏈接到sqlfiddle如果你想玩記錄和架構。
這是工作很好,非常感謝你:) –