日期範圍之間查詢我查詢
SELECT * FROM tempLog WHERE date BETWEEN '23-03-2017' AND '02-04-2017'
,結果是零。如何解決這個問題。但是
SELECT * FROM tempLog WHERE date BETWEEN '23-03-2017' AND '30-03-2017'
給我正確的結果。 注意: - tempLog是表名。
日期範圍之間查詢我查詢
SELECT * FROM tempLog WHERE date BETWEEN '23-03-2017' AND '02-04-2017'
,結果是零。如何解決這個問題。但是
SELECT * FROM tempLog WHERE date BETWEEN '23-03-2017' AND '30-03-2017'
給我正確的結果。 注意: - tempLog是表名。
According to the documentation,你應該寫日期時使用此格式:'YYYY-MM-DD'
(雖然它說,它可能會接受在某些情況下'YYYYMMDD'
甚至YYYYMMDD
)。
這是強制性的嗎? –
@SubratKumar - 是的,但如果你的列是varchar類型的,並且它的格式正是它在截圖中的樣子,它將無法工作。 – GurV
您可以將DATE_FORMAT用於其他格式,並且您的安裝可能使用不同的日期格式,但@pjehan適用於大多數設置 –
您應該以date
格式或至少格式正確的字符串(YYYY-MM-DD)存儲日期。
現在你可以使用str_to_date
的字符串轉換爲日期和比較:
select *
from tempLog
where str_to_date(date, '%d-%m-%Y') between '2017-03-23' and '2017-04-02';
但是注意,這將使用列上,如果任何索引阻礙優化。
正確的補救措施是修復表結構。
日期列的數據類型是什麼? – GurV
在這種情況下,您的第一站總是[**文檔**](https://dev.mysql.com/doc/refman/5.7/zh/date-and-time-literals.html)。 –
@GurV varchar是數據類型 –