mysqlを使用して5日前のレコードを選択したいのですが、問題は私の日付の列がvarcharで、次の形式であるということです。yyyy-mm- 00 AM/PM。mysqlを使って特定の日付のformateを持つ5日前のレコードを取得する
この日付形式をmysql日付に変換して5日後のレコードを選択するにはどうすればよいですか?
私の日付列名が 'DATE_TIME'
mysqlを使用して5日前のレコードを選択したいのですが、問題は私の日付の列がvarcharで、次の形式であるということです。yyyy-mm- 00 AM/PM。mysqlを使って特定の日付のformateを持つ5日前のレコードを取得する
この日付形式をmysql日付に変換して5日後のレコードを選択するにはどうすればよいですか?
私の日付列名が 'DATE_TIME'
これはa job for STR_TO_DATE()
です。
これを試してください。
... WHERE DATE(STR_TO_DATE(date_time,'%Y-%m-%d %h:%i:%s %p')) = CURDATE() - INTERVAL 5 DAY
'%Y-%m-%d %h:%i:%s %p'
DATE_FORMAT() stringは、あなたのテキスト日付形式と一致します。
sargableではないため、多数の行を検索する必要がある場合、これは決して高速ではありません。インデックスを悪用することはできません。
それは仲間を気に入って、それは私が欲しかったのとまったく同じです。 – user3475530
日付をvarcharとして保存しないでください。日付をdatetimeとして保存する必要があります。それがそのデータ型が存在する理由です。 –
[mysqlの日付に文字列を変換する方法は?](https://stackoverflow.com/questions/5201383/how-to-convert-a-string-to-date-in-mysql) –
@SeanLangeあなたは正しいです、その非常に古いテーブル、その時点で私はmysqlのデフォルトの日付型について知らなかった – user3475530