2015-07-10 68 views
0

我正在構建簡單的預留表單。比方說,我想在2015-07-12到2015-07-21之間預定一輛車。MySQL找到日期範圍內的任何記錄

在數據庫中有記錄,表示從2015-07-15到2015-07-20共有預定車(car_id 18)。

這裏是我的查詢,以檢查是否有保留車:

SELECT * FROM `reservation` WHERE `reservation_from` <= '2015-07-12' AND `reservation_to` <= '2015-07-21' AND `car_id` = 18 

查詢後,我得到了記錄,有已經預留車。一切都很好。

現在,我們說,我想預訂從2015-07-09到2015-07-19的汽車。

這次,我得到了空的結果。但有記錄,該車從2015-07-15至2015-07-20預留!

我玩過<=>=運營商,沒有運氣。

是的,這兩列都是日期格式。

我失蹤了什麼?如何獲得此記錄,是否已在所選日期範圍內預訂了所有車輛?

是的,MySQL不是我最強的一面。 謝謝!

+0

可能重複(http://stackoverflow.com/questions/16964740/using-mysql-between-clause-with-dates ) – gabe3886

+0

似乎有信息在這裏丟失 – Strawberry

+0

所以如果問題是在預定的時間段內保存汽車,您是否有我們可以使用的代碼示例? – Viralwarrior012

回答

0

你想任何重疊,不完全重疊。因此,邏輯是:

SELECT * 
FROM `reservation` 
WHERE `reservation_from` <= '2015-07-21' AND 
     `reservation_to` >= '2015-07-12' AND 
     `car_id` = 18; 

也就是說,有沒有車可用,如果預訂期結束前開始和週期開始後結束。

+0

「AND」子句中的語法錯誤 – Sadikhasan

+0

@Sadikhasan。 。 。第一個條款中缺少「AND」。 –

+0

這裏是快速小提琴[鏈接](http://www.sqlfiddle.com/#!2/a67a94/8),不能得到您的建議 – skunks

0

使用下面的查詢:使用日期間條使用MySQL]的

SELECT * 
    FROM `reservation` 
    WHERE 
`reservation_from` <= '2015-07-21' AND 
`reservation_to` >= '2015-07-12' AND 
`car_id` = 18; 
+0

我正在寫答案,同時他寫了相同的答案 –

相關問題