我試圖找到合適的查詢,檢查日期和時間範圍在MySQL表重疊,這裏是表:如何在沒有重疊存儲日期和時間範圍在MySQL
id pickup_date pickup_time return_date return_time
1 2016-05-01 12:00:00 2016-05-31 13:00:00
2 2016-07-01 12:00:00 2016-07-04 15:00:00
這裏有對「保留」表進行檢查哪些快到了,需要每一個預訂數據:
pickup_date = '2016-04-01';
pickup_time = '12:00:00'
return_date = '2016-05-01';
return_time = '13:00:00'
與此數據的保留重疊一個在數據庫中。請注意:新的預訂可以在過去或未來。
EDIT(所建議的spencer7593,這也是目前爲止工作版本):
SET @new_booking_pickup_date = '2016-04-01';
SET @new_booking_pickup_time = '12:00:00';
SET @new_booking_return_date = '2016-05-01';
SET @new_booking_return_time = '13:00:00';
SELECT * FROM Reservation WHERE NOT
(CONCAT(@new_booking_pickup_date,' ',@new_booking_pickup_time) > CONCAT(return_date,' ',return_time) + INTERVAL 0 DAY OR CONCAT(@new_booking_return_date,' ',@new_booking_return_time) < CONCAT(pickup_date,' ',pickup_time) + INTERVAL 0 DAY);
,所以會導致此查詢:
id pickup_date pickup_time return_date return_time
1 2016-05-01 12:00:00 2016-05-31 13:00:00
非常感謝。我將在稍後嘗試 – eXtreme
我省略了上述工作的一些要求......必須保證b1,e1,st等是**'DATETIME' **數據類型,並保證爲真... **(b1 <= e1 AND st <= et)**(這保證了句點的開始在句點結束之前,這又保證了開始和結束都是非空的。) – spencer7593
我需要+ INTERVAL 0 DAY,因爲(+ INTERVAL)不受DQL支持(我需要在DQL而不是SQL中查詢) – eXtreme