0

我正在尝试SELECT从 MySQL 表中获取行并按日期和时间对它们进行排序:

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

post_date格式如下: 2012-07-18 01:52:57 am (omd h:i:sa)。我认为这是正确的简单日期格式,但排序不准确。

防爆输出:

1.) 2012-07-18 12:41:07am

2.) 2012-07-18 12:26:03am

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

如您所见,1:52 的最新帖子应位于顶部,但位于底部。我到底做错了什么,正确的日期和时间格式是什么?

4

3 回答 3

2

我认为它正在处理 12>1 ..最好使用 24 小时格式而不使用 am/pm

于 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 回答