【问题标题】:MySQL order by DATETIME field outputting wrong posts orderMySQL按DATETIME字段排序输出错误的帖子顺序
【发布时间】:2016-12-20 17:09:24
【问题描述】:

我正在尝试按 MySQL 日期时间字段排序我的帖子 所以我以以下格式插入数据

gmdate('Y-m-d h:i:s');

在我的查询下方

SELECT * FROM posts WHERE post_stats = 1 ORDER BY published_date DESC LIMIT 10

而且帖子的顺序是错误的。然后我尝试了

SELECT * FROM posts WHERE post_stats = 1 ORDER BY DATE(published_date) DESC LIMIT 10

也试过了

SELECT * FROM posts WHERE post_stats = 1 ORDER BY UNIXDATE(published_date) DESC LIMIT 10

仍然是帖子顺序错误。

编辑

我的帖子应该显示为

post 2 | 2016-12-20 04:52:08
post 1 | 2016-12-20 04:51:20

但它显示为

post 1 | 2016-12-20 04:51:20
post 2 | 2016-12-20 04:52:08

有人可以指出我在这里做错了什么吗?感谢您的时间。

【问题讨论】:

  • 你的结果是什么?您的预期结果是什么?
  • @mistermartin 只是希望它按 DATETIME 标记订购,但它显示的顺序有误。
  • 那没有回答我的问题。我不能假设错误或正确的顺序是什么,除非你告诉我。
  • @mistermartin 刚刚添加了一个示例。请检查。谢谢。

标签: php mysqli unix-timestamp


【解决方案1】:

一个提示我如何做到这一点随着时间的推移在你的数据库中做一个名为 id 的 ai 并且总是按 id 排序:D

【讨论】:

  • 我不想按 ID 订购。因为帖子在发布之前将处于非活动状态。所以我想按发布的日期和时间 DESC 订购
  • 在发布时设置 id 是一种方法吗?
  • 据我所知您无法手动插入自动增量 ID
  • 你可以使用 php,如果你只是运行 throw 数据库并选择 id2,然后为每个发布的内容增加,那么你可以在你发布的帖子的 id2 中设置该数字
【解决方案2】:

听起来DESC 是您的问题。试试ASC 喜欢

SELECT * FROM posts 
WHERE post_stats = 1 
ORDER BY published_date ASC LIMIT 10

【讨论】:

    【解决方案3】:

    看来将我的日期格式从 12 小时更改为 24 小时似乎可以解决问题

    gmdate('Y-m-d h:i:s');
    

    gmdate('Y-m-d H:i:s');
    

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      相关资源
      最近更新 更多