2017-08-25 52 views
1

的MySQL

+--+------------+ 
|Id| Date  | 
+--+------------+ 
|1 | 2017-08-08 | 
+--+------------+ 
|2 | 2017-08-23 | 
+--+------------+ 
|3 | 2017-08-23 | 
+--+------------+ 
|4 | 2017-08-24 | 
+--+------------+ 
|5 | 2017-08-24 | 
+--+------------+ 

查詢

SELECT * FROM BoxExits WHERE Date BETWEEN '2017-08-08' AND '2017-08-24' 

問題

當我執行我收到預期日期(從ID爲1的查詢到3)除了包含這個日期的所有行2017-08-24(fro M id設定4〜5),只有這樣,才能收集它是通過添加一個日子,所以該查詢看起來像這樣

SELECT * FROM BoxExits WHERE Date BETWEEN '2017-08-08' AND '2017-08-25' 

在這種情況下,將檢索包含此日期2017年8月24日的所有行(從ID 4到5),因爲用戶是選擇日期的用戶,我不想強​​迫他在日期中添加一天。

那麼我該如何去查詢給我最大日期(2017-08-24)?

我的研究

雖然搜索我沒有找到太多,除了這一點:

SELECT * FROM BoxExits WHERE Date >= '2017-08-08' AND Date <= '2017-08-24' 

因爲查詢說Date <= '2017-08-24' 2017年8月24日,應包括在內,但這個問題保持。

環境檢測 我在phpMyAdmin和我創造無一不是給我相同的結果(行從1到3)C#程序進行了測試。

+1

什麼類型是你的'Date'列? –

+0

我認爲你應該在他的回答中提到的@scaisedge之間。在MySQL中,我們使用'between'作爲匹配日期 – Noob

+0

@TimBiegeleisen是DateTime,但已經是awaserd了。 – pekira

回答

4

這可能是因爲你有一個日期日期時間最好儘量使用僅日期部分:

SELECT * 
FROM BoxExits 
WHERE DATE(Date) BETWEEN '2017-08-08' AND '2017-08-24' 
+0

但是如果有一個日期列的索引呢?這會導致引擎錯過索引嗎? – Steve

+0

由OP的問題如果沒有得到預期的結果之間..日期..原因是OP比較日期時間與日期值,所以結果不符合預期..對索引ond日期列..正常情況下,列上的功能可以使索引失效..但是爲此,OP還可以爲DATE(日期)創建和索引 – scaisEdge

+0

如果這是真的,那麼結果將顯示時間分量!並且,記住這是MySQL,我不確定在MySQL中創建'DATE(日期)'索引 – Strawberry