1

残念ながら、次のようにフォーマットされた日付の VARCHAR 列があります: Jun-13-2013

(これは正しく行われておらず、標準形式の DATETIME 列に格納する必要があることを理解しています)

すべての行のすべてのデータを取得し、その VARCHAR 列を DATETIME として ORDER しようとしていますが、フォーマットが不十分な日付列を並べ替え用に変換するものは見つかりません。

ここに私のクエリがあります:

$result = mysql_query("SELECT * FROM archive ORDER BY crapdates DESC");

しかし、列を日時に変換しようとしていcrapdatesます...これは可能ですか?

どこにも mmm-dd-yyyy 形式の変換が見つかりません

チェックしていただきありがとうございます

4

3 に答える 3

2

STR_TO_DATE()関数で既存の varchar 列を日付値に変換する必要があります。

の. _ STR_TO_DATE()_ _STR_TO_DATE()ORDER BYSELECT

UPDATE archive SET newdate = STR_TO_DATE(crapdate,'%b-%e-%Y');

テーブル構造を変更できない場合は、次のように既存の列で並べ替えることができます。

SELECT * FROM archive ORDER BY STR_TO_DATE(crapdate,'%b-%e-%Y') DESC;
于 2013-06-13T17:40:04.917 に答える
1

STR_TO_DATE()文字列を MySQLORDER BYの日付値と結果に変換するために使用できます。

ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y')

DATEただし、文字列を使用する代わりに、列をデータ型に変換することをお勧めします。」

回答: https://stackoverflow.com/a/10637668/1146492 by xdazz

于 2013-06-13T17:39:47.783 に答える