0

すべてのイベントを保存するテーブルがあります。そのテーブルには、「event_date」という名前の列があります。イベントを作成する人は、次のように日付を入力する必要があります: d/m/Y - 例: 27/02/2013.

しかし、event_date ASC で結果を並べ替えようとすると、目的の順序で表示されません。UNIX_TIMESTAMP(event_date) で注文しようとしましたが、問題も解決しません。

どうすればこれを修正できますか?

解決策は 1 つあります。人がイベントを作成すると、それをタイムスタンプに変換できます。でも、今のままでは正しくソートできないのでしょうか?

前もって感謝します。

4

1 に答える 1

1

英数字の並べ替えが正しく機能するようにするには、日付を YYYY/MM/DD として VARCHAR 列に格納する必要があります。
そのままでは、システムは次のようにソートします。

27/02/2013
01/03/2013
06/03/2013

このような:

01/03/2013
06/03/2013
27/02/2013

列を DATE データ型に変更できる場合は、入力形式を次の形式に切り替えるかYYYY-MM-DD、引き続き受け入れDD/MM/YYYYて使用することができます。

STR_TO_DATE('01/03/2013','%d/%m/%Y')

値を有効な日付に変換する

于 2013-02-27T11:39:49.867 に答える