1

すべて、次のクエリがあります。

SELECT ...
FROM....
WHERE...
ORDER BY gear_checkout_summary.check_out_date DESC";

たとえば、次の
日付 が あり ます 。




私の結果が返されるとき、それらはこのようにソートされます。私のデータ要素は、私のデータベースに VARCHAR(10) として保存されています。日付を正しくソートするようにクエリを変更する方法はありますか?

ありがとう!

4

5 に答える 5

2

これにより、日付が適切な 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;

上記のコードの説明は次のとおりです。

  1. テーブルに新しい列を作成します。
  2. 正しく書式設定された前の列の日付を新しい列に入力します。
  3. 古い不適切なフォーマットの列を削除します。
  4. 新しい列の名前を以前の列名に変更します。
于 2013-07-22T21:19:02.877 に答える
1

使用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。これは、日付を格納する最も簡単でクリーンな方法です。

于 2013-07-22T21:16:55.070 に答える