【问题标题】:Wrong ORDER BY with MySQL and PHPMySQL 和 PHP 的错误 ORDER BY
【发布时间】:2017-04-12 15:05:26
【问题描述】:

在我的 MySQL 中有一个名为 date 的列,类型是 timestamp

在我的 PHP 脚本中使用它:

$stmt = $pdo->prepare('SELECT id, date FROM my_table ORDER BY DATE(date) ASC, TIME(date) DESC');

输出是:

2016-11-26 16:55:30
2016-11-26 16:53:08
2016-11-26 16:37:25
2016-11-26 16:32:29
2016-11-26 16:18:57
2016-11-28 19:37:37

但这是错误的顺序。我想把最新的日期放在最上面,包括日期和时间。

意思:

2016-11-28 19:37:37
2016-11-26 16:55:30
2016-11-26 16:53:08
2016-11-26 16:37:25
2016-11-26 16:32:29
2016-11-26 16:18:57

我做错了什么?

【问题讨论】:

  • 不要按日期/时间分开。就做ORDER BY `date` DESC
  • 正如其他人指出的那样,您可以对整个列进行排序。但是要特别指出您的问题,那是因为您有 DATE(date) ASC。 ASC 表示升序,因此您按日期升序但时间降序排序。将 ASC 更改为 DESC 也可以解决您的问题。

标签: php mysql sql date timestamp


【解决方案1】:

为什么不能在整个列值上只使用order by,而不是分别对日期部分和时间部分进行排序

ORDER BY `date` DESC

【讨论】:

    【解决方案2】:

    SELECT id, date FROM my_table ORDER BY date DESC

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 2014-10-21
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多