SELECT * FROM `incomes` WHERE incomeDate BETWEEN '28-12-2016' and '31-01-2017'
工作時,此查詢無法正常工作,但是當我做下面的查詢,那麼顯示結果SQL查詢之間無法正常
SELECT * FROM `incomes` WHERE incomeDate BETWEEN '28-12-2016' and '31-12-2016'
SELECT * FROM `incomes` WHERE incomeDate BETWEEN '28-12-2016' and '31-01-2017'
工作時,此查詢無法正常工作,但是當我做下面的查詢,那麼顯示結果SQL查詢之間無法正常
SELECT * FROM `incomes` WHERE incomeDate BETWEEN '28-12-2016' and '31-12-2016'
請更改日期格式,在水平的研究MySQL支持「YYYY-MM-DD」日期甲。請使用下面的查詢。
SELECT * FROM incomes WHERE incomeDate BETWEEN '2016-12-28' and '2017-01-31'.
希望這會對你有所幫助。
您正在比較日期列和(兩個)字符串文字。這裏發生的是將日期轉換爲字符串並按字典順序進行比較。相反,您應該明確地將字符串轉換爲日期,然後按日期順序進行比較:
SELECT *
FROM incomes
WHERE incomeDate BETWEEN STR_TO_DATE('28-12-2016', '%d-%m-%Y') AND
STR_TO_DATE('31-01-2017', '%d-%m-%Y')
嗯,它總是一個詞典對比! – Strawberry
10 ...'incomeDate'列的數據類型是什麼?它被聲明爲'DATE'或'VARCHAR'嗎?請注意,格式爲dd-mm-yyyy的字符串文字是* not * canonical;字符串的比較從左到右逐個字符地進行。因此,兩個字符串文字之間的字符串值「* 29 -07-1999」將被置於*之間,但代表*日期*,日期不是。 – spencer7593