1

varchar(255) 型のテーブル desc (mm/dd/yyyy 形式) からレコードを注文しようとしています。

日付順

SELECT *, DATE_FORMAT(date,'%m/%d/%Y') AS reldate FROM table ORDER BY reldate DESC

これは機能していません。日付 = 03/28/2009 の場合、reldate は NULL として返されます。私は mysql の初心者なので、これを修正する方法がよくわかりません。

ありがとう。

4

2 に答える 2

1

(私はあなたの質問を誤解している可能性があります。日付列は日付ですか、それとも varchar ですか?私の回答は、それが varchar であるという仮定に基づいています。これは私が理解したものです。)

あなたが求めている関数はDATE_FORMATではなく STR_TO_DATE だと思います。DATE_FORMAT は、実際にはあなたが望むこととは反対のことをします。文字列から日付に移行しようとしているのに対し、日付から文字列に移行します。

より大きな問題は、そもそもなぜこのデータが VARCHAR 列にあるのかということです。

于 2012-06-07T21:35:41.607 に答える
0

その関数で使用する前に、型に変換dateする必要がある場合があります。datetime試す:

SELECT *, DATE_FORMAT(CAST(`date` AS DATETIME),'%m/%d/%Y') AS reldate
FROM table ORDER BY reldate DESC

私が行ったように、date予約語の競合を避けるために、クエリのフィールドをバッククォートで囲みます。
他の人が述べたように、このフィールドはdatetime最初に列タイプである必要があります。

于 2012-06-07T21:36:22.157 に答える