1

たとえばdate、テーブルpostに名前の付いた列があり、それをで並べ替えたいとしますascending

私のdateコラムでは、RCF112形式で入力します。例:Sun, 22 APR 2012 5:21:22

まず、次のコマンドから始めます。

SELECT * 
FROM  post 
ORDER BY date ASC

ただし、文字列に従って並べ替えられているため、結果は正しくないように見えます。「Sun」は「W」の前にアルファベットの「S」で始まるため、「Sun、15APR2012」が最初に表示Sun, 15 APR 2012されるためよりも古くなります。Wed,11 APR 2012

このコマンドを修正する方法は?

4

2 に答える 2

2

文字列を正しくソートできるようにするには、文字列を日時として解析する必要があります。

フォーマットを使用して、次のようなことを試すことができます。

STR_TO_DATE('Sun, 22 APR 2012 5:21:22', '%a, %e %b %Y %h:%i:%S')

日付を作成します2012-04-22 05:21:22

したがって、クエリは次のようになります。

SELECT * 
FROM  post 
ORDER BY 
  STR_TO_DATE(date, '%a, %e %b %Y %h:%i:%S')
ASC

他の人がすでに提案しているように、datetimeフィールドタイプを使用して、選択で日付をフォーマットすることができます(date_format http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date -format)を要件に合わせます。

于 2012-04-22T10:50:13.393 に答える
0
SELECT * 
FROM  post 
ORDER BY STR_TO_DATE(datestr, '%a, %d %b %Y %T') ASC
于 2012-04-22T10:53:53.217 に答える