[英]Get 30 minutes interval data between start and end time in mysql
我在mysql中有表結構,
table_id no_people booking_date bookingend_time bookingstart_time
14 2 2014-10-31 2014-10-31 13:30:00 2014-10-31 11:00:00
5 4 2014-10-31 2014-10-31 16:30:00 2014-10-31 14:30:00
6 2 2014-10-31 2014-10-31 17:00:00 2014-10-31 16:00:00
2 4 2014-11-06 2014-11-06 12:30:00 2014-11-06 10:00:00
2 4 2014-10-31 2014-10-31 16:00:00 2014-10-31 14:00:00
3 4 2014-11-01 2014-11-01 09:00:00 2014-11-01 07:30:00
6 2 2014-11-01 2014-11-01 10:00:00 2014-11-01 07:30:00
2 4 2014-11-03 2014-11-03 10:30:00 2014-11-03 08:30:00
5 4 2014-11-04 2014-11-04 10:30:00 2014-11-04 08:30:00
3 4 2014-11-05 2014-11-05 09:30:00 2014-11-05 07:30:00
14 2 2014-11-05 2014-11-05 09:30:00 2014-11-05 07:30:00
我想以30分鍾的開始和結束時間間隔檢索table_id數據。
例如:如果我給預訂開始時間10:30和結束時間12:30,我應該得到14作為行。同樣,它應該檢查所有行並在兩次之間返回。
到目前為止我的查詢
SELECT `table_id` FROM `booking` WHERE bookingstart_time>='2014-10-31 10:30:00' AND bookingend_time<='2014-10-31 11:30:00'
步驟1:將輸入時間范圍擴大30分鍾之前和30分鍾之后。 DATE_ADD()
和DATE_SUB()
可以做到:
DATE_SUB(_input_start_date_here_, INTERVAL 30 MINUTE)
步驟2:根據開始時間和結束時間重新考慮您的問題。 這是可能的情況:
上面的第一種情況可以這樣表示:
WHERE bookingstart_time >= DATE_SUB(_input_start_date_here_, INTERVAL 30 MINUTE)
AND bookingstart_time <= DATE_ADD(_input_end_date_here_, INTERVAL 30 MINUTE)
第二個條件留作練習。 您也可以使用更優雅的BETWEEN
運算符重寫上面的代碼。
從rest_restaurantbooking的WHERE TIMESTAMPDIFF(SECOND,bookingstart_time,bookingend_time)中選擇1800。
參考: 這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.