特定の日付以降のすべての列を選択しようとしていますが、トリックは「日付」列が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を使用することもできます。
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