我想具體的日期後,選擇所有列,但訣竅是「日期」一欄爲varcharMYSQL選擇行特定日期(行類型爲varchar)
我有這個
SELECT * FROM `users` WHERE STR_TO_DATE(birthday,'%m/%d/%Y') > '10-10-2000'
作爲一個例子,我想選擇生日在10/10/2000之後的所有用戶,但這只是返回所有行。
有人知道什麼是錯的?
我想具體的日期後,選擇所有列,但訣竅是「日期」一欄爲varcharMYSQL選擇行特定日期(行類型爲varchar)
我有這個
SELECT * FROM `users` WHERE STR_TO_DATE(birthday,'%m/%d/%Y') > '10-10-2000'
作爲一個例子,我想選擇生日在10/10/2000之後的所有用戶,但這只是返回所有行。
有人知道什麼是錯的?
您正在比較數據和字符串。我會用CAST
:
WHERE STR_TO_DATE(birthday,'%m/%d/%Y') > CAST('2000-10-10' AS date)
另外請注意,我改變了第二的格式以匹配在MySQL中期望什麼。您也可以在這裏使用STR_TO_DATE。
我想你是唯一一位閱讀OP的問題的人。 –
我認爲mysql的日期通常是yyyy-mm-dd,這意味着你應該在2000-10-10結束時更改字符串。
試試這個,讓我知道如果這有效。
我們需要知道字符串生日是什麼格式,現在你說它是例如2001年12月31日。是對的嗎?
如果你有多個字符串,請考慮使用相同STR_TO_DATE格式化:
WHERE STR_TO_DATE(birthday, '%m/%/d/%Y') BETWEEN STR_TO_DATE(some_date, '%m/%/d/%Y')
AND STR_TO_DATE(another_date, '%m/%/d/%Y')
更多信息: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
只是題外話:沒有任何理由日期沒有時間戳或任何語義上更正確的類型比VARCHAR? –