SELECT * FROM table ORDER BY timestamp;
タイムスタンプでレコードを並べ替えようとすると、次の順序になります
08/20/2012 02:09:39 PM
08/20/2012 03:19:08 PM
08/20/2012 09:04:24 AM
08/20/2012 09:05:25 AM
レコードがAMからPMに順序付けられるようにクエリを変更するにはどうすればよいですか?
SELECT * FROM table ORDER BY timestamp;
タイムスタンプでレコードを並べ替えようとすると、次の順序になります
08/20/2012 02:09:39 PM
08/20/2012 03:19:08 PM
08/20/2012 09:04:24 AM
08/20/2012 09:05:25 AM
レコードがAMからPMに順序付けられるようにクエリを変更するにはどうすればよいですか?
問題は、タイムスタンプの文字列表現が標準形式ではないことです。つまり、文字列値を並べ替えると、タイムスタンプの順序で並べ替えられません。
行を順番に並べ替えるには、値の文字表現をDATETIMEまたはTIMESTAMPデータ型に変換するか、少なくとも正規形式の文字表現に変換します(たとえば、「YYYY-MM-DD hh:mm:ss」 24時間制)。
このSTR_TO_DATE
関数は、既知の形式の文字列表現をDATETIMEに変換するのに役立ちます。
SELECT * FROM table
ORDER BY STR_TO_DATE(`timestamp`,'%m/%d/%Y %h:%i:%s %p')
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format http://dev.mysql.com/doc/refman/5.1/en/date -and-time-functions.html#function_str-to-date
あなたは使いたいでしょうSTR_TO_DATE()
select *
from dates
order by STR_TO_DATE(dt,'%m/%d/%Y %h:%i:%s') desc
デモ付きのSQLフィドルを参照してください
:を追加するだけDESC
です
SELECT * FROM table ORDER BY timestamp DESC;