0

SELECTMySQL テーブルから行を取得し、日付と時刻で並べ替えようとしています。

mysql_query("SELECT * FROM `user` ORDER BY post_date DESC");

は次のpost_dateようにフォーマットされます: 2012-07-18 01:52:57am (omd h:i:sa)。これは適切な単純な日付形式であると考えましたが、正確に並べ替えられていません。

例の出力:

1.) 2012-07-18 午前 12:41:07

2.) 2012-07-18 午前 12:26:03

3.) 2012-07-18 01:52:57am

ご覧のとおり、1:52 の最新の投稿が一番上にあるはずなのに一番下にあります。私は一体何を間違っているのですか?正しい日付と時刻の形式は何ですか?

4

3 に答える 3

2

私はそれが12>1を扱っていると思います..午前/午後なしで24時間形式を使用する方が良いです

于 2012-07-18T07:18:11.933 に答える
1

文字列として保存post_dateしていますか?タイプがありますdatetime(またtimestamp、おそらく投稿日のようなものに好まれます)。これらのタイプに変更できる場合は、より適切に機能します。

それ以外の場合は、次のようなものを使用してphpでそれらを保存する必要がありますstrtotime

$results = array();
while ($row = mysql_fetch_assoc($result)) {
   $results[strtotime($row['post_date'])] = $row;
}
ksort($results);

これは最も簡単な解決策ですが、同じタイムスタンプがないことも必要です。

于 2012-07-18T07:18:13.217 に答える
1
SELECT * FROM `user` 
ORDER BY cast(post_date as datetime) DESC
于 2012-07-18T07:20:36.057 に答える