我有一個名爲「日期」列其類型爲VARCHAR(原因),但將日期存儲的格式 - (DMY H:I:S)轉換爲varchar在MySQL中給定的日期格式
現在我有做一個BETWEEN查詢來查找兩個日期之間的記錄。但是因爲數據類型是varchar,我首先必須將該列轉換爲日期類型然後進行比較。所以我試過了 -
SELECT
mobile,
STR_TO_DATE(date,'%Y-%m-%d')
FROM register
WHERE STR_TO_DATE(date,'%Y-%m-%d')
BETWEEN STR_TO_DATE('2017-05-01','%Y-%m-%d') AND
STR_TO_DATE('2017-05-31','%Y-%m-%d')
這個查詢將'date'列正確地轉換成Y-m-d格式。但是,比較的兩個日期被視爲字符串(「2017-05-01」和「2017-05-31」),結果僅返回2017-05-20日期的記錄。
查詢應該是什麼,以便比較日期類型中的列和給定日期?
的STR_TO_DATE函數調用日期應該使用一種格式,比如它如何存儲,而不是你想要輸出的格式。 –
您應該在這裏將您的格式與'd-m-Y H:i:s'的實際內容格式'STR_TO_DATE(日期,'%Y-%m-%d')'匹配。 – Himal
查看[this](https://dev.mysql.com/doc/refman/5.5/zh-CN/date-and-time-functions.html#function_str-to-date) –