3
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に順序付けられるようにクエリを変更するにはどうすればよいですか?

4

3 に答える 3

4

問題は、タイムスタンプの文字列表現が標準形式ではないことです。つまり、文字列値を並べ替えると、タイムスタンプの順序で並べ替えられません。

行を順番に並べ替えるには、値の文字表現を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

于 2012-08-23T21:41:10.487 に答える
3

あなたは使いたいでしょうSTR_TO_DATE()

select *
from dates
order by STR_TO_DATE(dt,'%m/%d/%Y %h:%i:%s') desc

デモ付きのSQLフィドルを参照してください

于 2012-08-23T21:43:41.283 に答える
2

:を追加するだけDESCです

SELECT * FROM table ORDER BY timestamp DESC;
于 2012-08-23T21:37:40.257 に答える