2017-04-02 93 views
-1

DEMO Table structure is here如何在MySQL

日期範圍之間查詢我查詢

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是表名。

+0

日期列的數據類型是什麼? – GurV

+0

在這種情況下,您的第一站總是[**文檔**](https://dev.mysql.com/doc/refman/5.7/zh/date-and-time-literals.html)。 –

+0

@GurV varchar是數據類型 –

回答

0

According to the documentation,你應該寫日期時使用此格式:'YYYY-MM-DD'(雖然它說,它可能會接受在某些情況下'YYYYMMDD'甚至YYYYMMDD)。

+0

這是強制性的嗎? –

+1

@SubratKumar - 是的,但如果你的列是varchar類型的,並且它的格式正是它在截圖中的樣子,它將無法工作。 – GurV

+0

您可以將DATE_FORMAT用於其他格式,並且您的安裝可能使用不同的日期格式,但@pjehan適用於大多數設置 –

3

您應該以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'; 

但是注意,這將使用列上,如果任何索引阻礙優化。

正確的補救措施是修復表結構。