3

我不知道这是 MySQL 的错误还是我的错,但它真的开始让我感到不安。

为了得到用户的答案,我使用了这个查询(这也确保问题没有被删除或隐藏):

  SELECT *
    FROM answers a
    JOIN questions q
      ON a.questionid = q.qid
   WHERE a.userid = <uid> -- query parameter
     AND a.deleted = 0
     AND q.hidden = 0
     AND q.deleted = 0
ORDER BY a.created DESC

问题是所有答案都按创建时间的时间戳排序,除了其中三个。在我个人资料上的答案截图中,查看“这个问题的排序有问题......”的问题的答案日期:

在此处输入图像描述

我真的不知道发生了什么。如您所见,MySQL 查询具有ORDER BY a.created DESC.


我尝试了什么?

好吧,我已经尝试了很多东西,比如回显存储在数据库中的 Unix 时间戳,它们都是正确的。

我尝试的另一件事是调用strtotime()时间戳,但这只会给我带来更多问题:第一个奇怪地变成了一个巨大的负数并显示1717 年 8 月 3 日,但其他的被设为空白,因此显示为1969 年 12 月 31 日


编辑

看起来其他几行也混在一起了。


解决方案

我发现questions表格和answers表格都有一created列。我通过这样做解决了这个SELECT *, a.created as ans_created, q.created as q_created问题,现在它可以工作了。感谢所有帮助过的人。

4

2 回答 2

2

我只是想回答我自己的问题,因为我弄清楚了问题所在。

我发现问题表和答案表都有一created列。

问题是我a.created在查询中按顺序排序,但由于在 PHP 中我显示了$row['created']正确排序的日期,但显示的日期/时间不正确。

我通过这样做解决了这个问题......

SELECT *, a.created as ans_created, q.created as q_created 

然后在我的 PHP 中我只是这样做$row['ans_created']

感谢所有在评论和其他答案中提供帮助的人。:)

于 2012-08-16T02:17:06.533 回答
1

尝试CAST列为a.created

ORDER BY CAST(a.created AS DATETIME) DESC;

如果您使用的是 INT 字段,请尝试:

ORDER BY CAST(a.created AS UNSIGNED INTEGER) DESC;
于 2012-08-03T07:06:42.413 回答