2015-01-17 50 views
0

日期之間有兩個我有一個表中的一行:檢查其他

id booking start    end 
3  325 2015-01-01 00:00:00 2015-01-09 00:00:00 

使用下面的查詢我試圖找到行,其中指定的日期是兩個人之間:

SELECT * FROM $table WHERE booking=$product AND $from between start and end 

運行時解析如下:

SELECT * FROM wp_ovalbit_utils WHERE booking=325 AND 2015-02-01 between start and end 

顯然這應該返回該行,但它不會。

這是我的架構:

id mediumint(9) NOT NULL AUTO_INCREMENT, 
booking text NOT NULL, 
start datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 
end datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 
UNIQUE KEY id (id) 
+0

你錯過了超過起始日期和更少的這些(') – Strawberry

+0

哦,是的,和02-01是2月1日 – Strawberry

回答

2

你忘了周圍的日期報價和逃生保留字狀end

SELECT * 
FROM wp_ovalbit_utils 
WHERE booking = 325 
AND '2015-02-01 00:00:00' between `start` and `end` 

BTW 1日的二月是兩個示例日期之間沒有

+0

日期格式爲yyyy-dd-mm,所以這是一月的第二個 –

+0

默認格式爲'yyyy-mm-dd'。 –

+0

哇,我是個白癡。由於人們以dd/mm/yyyy輸入,我認爲該日期會保持正確的順序。那是錯誤的一部分。 –

0

您應該可以使用以下WHERE子句。

WHERE `start` < $from AND $from < `end`; 

我不能肯定地說,如果列能之間的語句(至少,我從未使用過這種方式BETWEEN周圍)使用。

PS。注意直接使用變量可能可能發生的SQL注入。見http://wiki.hashphp.org/Validation

0
SELECT * FROM wp_ovalbit_utils 
WHERE booking=325 
AND `start` < '2015-02-01 00:00:00' AND `end` > '2015-02-01 00:00:00' 

所以,基本上你的日期應該是在結束日期