この形式で日付を格納する VARCHAR フィールドを持つ mysql テーブルがありますdd/mm/yyyy
。このテーブルには既にデータが格納されており、このデータを降順で並べ替える必要があります。これは可能ですか?
3 に答える
日付を処理する最善の方法は、then を日付データ型として格納することです。
日付データ型の列を追加し、データをマージしてから名前を変更することで、現在それらにあるデータを日付列に簡単に変換できます。
alter yourTable add dateColumnName date;
update yourTable set dateColumnName = STR_TO_DATE(oldDateColumn, '%m/%d/%Y');
drop column oldDateColumn;
alter table yourTable change dateColumnName oldDateColumn date;
これを行うと、あらゆる種類の複雑な日付処理を実行できるようになります (単に日付を適切に並べ替えたり、さまざまな形式でデータを取得したりするだけでなく、計算、比較なども可能です)。データを列に挿入する方法もおそらく変更する必要があることに注意する必要がありますが、文字列日付を CSV またはフォームから適切な日付列に変換する簡単な方法はたくさんあります。
編集:マーティンが指摘しているように、現在そこに保存されているいくつかのバムデータがある場合、日付に変換するときに問題が発生する可能性がありますが、更新を行うときにこれらをかなり簡単に見つけることができます. update...クエリを実行したら、次のコマンドを実行するだけです。
select count(*) from yourTable where dateColumnName is null; // Total Problem Count
select * from yourTable where dateColumnName is null; // Detail
これにより、更新されなかった行が表示されます
その文字列値をソートのために適切な日付に変換する必要があります。
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
何かのようなもの:
ORDER BY STR_TO_DATE(date_column, '%d/%m/%Y') DESC
str_to_date mysql関数でそれを行うことはできませんか http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
テストされていませんが、次のようになるはずです
select * from table ORDER BY STR_TO_DATE(date,"%e-%c-%Y");