2014-09-29 16 views
0
Date 1 :- 2014-09-27 10:00:00 
Date 2 :- 2014-09-29 11:00:00 

該範圍被存儲在數據庫內,這意味着用戶已給定的時間範圍內進行2天,從27至29和從27定時一起匹配的日期和時間 - > 10:00: 00至29日 - > 11:00:00。這意味着用戶將於2014年27日至29日上午10點至11點之間上市。如何在MySQL/PHP的

現在,如果我通過2014-09-28 13:00:00這是在日期範圍和時間範圍內,因爲用戶在該範圍內可以看到指定整個一天。

SELECT * FROM TABLE_NAME WHERE Id = $Id AND DATE('$currentDate') BETWEEN DATE(From_DateTime) AND DATE(To_DateTime) AND TIME('$timeHour') BETWEEN TIME(From_DateTime) AND TIME(To_DateTime) 

From_DateTime = Date1 
To_DateTime = Date2 
currentDate = 2014-09-28 
timeHour = 13:00:00 

現在的問題是,在邏輯上傳遞的參數是該範圍內,但使用查詢其沒有因爲時間的不檢查的日期,13不是10 & 11之間,它不工作。我也嘗試過DATETIME,但是它並沒有像給我錯誤那樣工作。

我需要一種方法來同時匹配日期&時間。任何人有任何建議。我使用PHP作爲編程語言。

回答

2

如果值存儲在DATETIME這樣的格式,您提到

Date 1 :- 2014-09-27 10:00:00 
Date 2 :- 2014-09-29 11:00:00 

然後,你甚至都不需要所有的複雜性。只需使用普通的比較運算符

SELECT * FROM yourTABLE 
WHERE startDate >= '2014-09-27 13:00:00' 
AND endDate <= '2014-09-29 10:00:00' 

Ofcourse您可以使用您的PHP變量而不是測試日期我在那裏查詢。您可以格式化您的PHP值以符合MySQL日期時間格式。

+0

我正在通過2014-09-28 13:00:00作爲參數。但在你的情況下,你已經比較了2日期和時間,而在我的情況下,我需要比較1日期時間和數據庫中存儲的日期時間。 – Scorpion 2014-09-29 03:18:16

+0

是的,這只是一個示例,您可以在查詢中對這兩個條件使用相同的日期。 – 2014-09-29 03:49:53

0

如果您期待較大的結果或較大的數據庫,我建議您使用「BETWEEN」。
但我想澄清你的數據庫模式有2個字段進行比較?即「To_DateTime」和「From_DateTime」?如果是這樣,我借調了Hanky的答案。