すべて、次のクエリがあります。
SELECT ...
FROM....
WHERE...
ORDER BY gear_checkout_summary.check_out_date DESC";
たとえば、次の
日付
が
あり
ます
。
私の結果が返されるとき、それらはこのようにソートされます。私のデータ要素は、私のデータベースに VARCHAR(10) として保存されています。日付を正しくソートするようにクエリを変更する方法はありますか?
ありがとう!
これにより、日付が適切な MySQL 日付形式になり、順序付けが簡単になります。
SELECT
STR_TO_DATE(gear_checkout_summary.check_out_date,"%m/%d/%Y") AS fixed_date
...
FROM ...
WHERE ...
ORDER BY fixed_date DESC
他の人が述べているように、とにかく可能であれば、データベースのフォーマットを修正する必要があります。挿入ステートメントを変更する必要があるかもしれませんが、余分な作業を行う価値があります。データベースの日付をフォーマットするために必要なことは次のとおりです。
ALTER TABLE gear_checkout_summary ADD check_out_date_temp DATE AFTER check_out_date;
UPDATE gear_checkout_summary SET check_out_date_temp = STR_TO_DATE(gear_checkout_summary.check_out_date,"%m/%d/%Y");
ALTER TABLE gear_checkout_summary DROP check_out_date;
ALTER TABLE gear_checkout_summary CHANGE check_out_date_temp check_out_date DATE;
上記のコードの説明は次のとおりです。
使用str_to_date
:
select *
from your_table
order by STR_TO_DATE(yourDateField,'%m/%d/%Y') desc;
これにより、文字列が有効な MySQL 日付に変換されます。このリンクを確認してください: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date
データ型を ... に変更する必要がありますDATE
。これは、日付を格納する最も簡単でクリーンな方法です。