2011-07-22 84 views
1

您好我有以下2條記錄的表:mysql的日期時間比較

descript | start    | end 
test 1 | 2011-07-18 14:30:00 | 2011-07-18 17:00:00 
test 2 | 2011-07-18 00:00:00 | 2011-07-19 00:00:00 

當我試圖做一個選擇,我不能似乎檢索第二結果(測試2),這似乎是清楚它的日期是七月十九日。

SELECT * FROM event WHERE start >= "2011-07-18 00:00:00" AND end <= "2011-07-18 23:59:59"; 

希望有任何建議。

+3

你的第二個'WHERE'子句告訴你的服務器只檢索'end' <= 2011-07-18 23:59:59'的數據。由於'2011-07-19 00:00:00'>大於'2011-07-18 23:59:59',因此它不會出現在您的結果集中。 – Bjoern

+0

ö男人感謝突出顯示,我忽略了這一點。任何想法如何做一箇中間的日期範圍比較呢?就像上面的例子做SELECT查詢一樣,我還想檢索第二個結果,因爲開始日期是在7月18日的範圍內? – pakito

回答

5

「2011-07-19 00:00:00」比「2011-07-18 23:59:59」

通過你的條件應該是少,所以您的查詢不更多匹配test 2

SQL查詢應該是:

SELECT * FROM event 
WHERE start >= "2011-07-18 00:00:00" 
AND end <= "2011-07-19 00:00:00"; 
+0

感謝您的強調,我忽略了這一點。任何想法如何做一箇中間的日期範圍比較呢?就像上面的例子做SELECT查詢一樣,我還想檢索第二個結果,因爲開始日期是在7月18日的範圍內? – pakito

1

你只需要排除列end,像

SELECT * FROM event 
WHERE start>="2011-07-18 00:00:00" AND start<="2011-07-18 23:59:59"; 
1

你可以做這個:)

SELECT * FROM event 
WHERE start BETWEEN '2011-07-18 00:00:00' AND '2011-07-19 00:00:00' 
AND end BETWEEN '2011-07-18 00:00:00' AND '2011-07-19 00:00:00' 

這導致您指定的範圍之間的時間爲開始和結束