2014-10-01 82 views
0

我想在Date列中搜索。MySql Select Query不能正常工作

我使用此查詢:

SELECT * FROM requestserverdb.closedrequests 
WHERE 
ClosingTimeStamp >= '2014-09-04' 
AND 
ClosingTimeStamp <= '2014-09-19'; 

我只能從2014年4月9日結果18-09-2014,它不包括最後一天!

也是,如果我使用:

SELECT * FROM requestserverdb.closedrequests 
WHERE 
ClosingTimeStamp >= '2014-09-04' 
AND 
ClosingTimeStamp <= '2014-09-04'; 

我不會全部得到任何結果!

怎麼回事?

我做錯了什麼?

它只是忽略了 '=' 號......

請幫助:)

戴夫。

+0

「ClosingTimeStamp」列的數據類型是什麼? – Jens 2014-10-01 12:37:32

+0

@Jens它的DateTime。 – 2014-10-01 13:18:31

回答

2

解決此問題的另一種方法是在日期的末尾添加「23:59:59」。這會讓自動生成的查詢變得更容易,而不是有朝一日推進日期。此外,如果您將其設置爲提前一天,並且實際上已收到包含結果中包含'2014-09-20 00:00:00'時間戳的封閉請求。我會假設你不想要的。你可以這樣做。

SELECT * FROM requestserverdb.closedrequests 
WHERE 
ClosingTimeStamp >= '2014-09-04' 
AND 
ClosingTimeStamp <= '2014-09-19 23:59:59'; 
+0

作品完美 - 謝謝! – 2014-10-05 09:02:05

1

這是因爲'2014-09-19'是指2014年9月在午夜(00:00:00)19,因此查詢不會ClosingTimeStamp返回任何記錄例如等於2014-09-19 09:25:00。你應該添加一天的上界在第二的地方條件和利用它<代替<=避免與ClosingTimeStamp返回任何記錄查詢等於2014-09-20 00:00:00

SELECT * FROM requestserverdb.closedrequests 
WHERE 
ClosingTimeStamp >= '2014-09-04' 
AND 
ClosingTimeStamp < '2014-09-20'; 
0

試圖將字符串轉換爲日期與時間的一部分:

SELECT * FROM requestserverdb.closedrequests 
WHERE 
ClosingTimeStamp between STR_TO_DATE('2014-09-04 0:0:0' , '%Y/%c/%d %H:%i:%s')) AND 
STR_TO_DATE('2014-09-19 23:59:59' , '%Y/%c/%d %H:%i:%s'))