【问题标题】:MySQL does not order correctly using UNIX timestampMySQL 未使用 UNIX 时间戳正确排序
【发布时间】:2021-04-07 18:16:56
【问题描述】:

我有这个 php 代码:

(来自我的数据库类)

$q = "SELECT * FROM" . CON_TBL. " WHERE a = $b ORDER BY thedate DESC";
$result = mysqli_query($this->connection, $q);

数据库上的日期(unix 时间戳)是:

1138322340
1617584160
1617673680
759952800

我得到了这个结果:

30-Jan-1994 12:00
05-Apr-2021 20:48
04-Apr-2021 19:56
26-Jan-2006 18:39

第一个日期应该是最后一个日期:

05-Apr-2021 20:48
04-Apr-2021 19:56
26-Jan-2006 18:39
30-Jan-1994 12:00

有什么想法吗?

【问题讨论】:

  • DB 上的日期(unix 时间戳)是: 在 MySQL 中,TIMESTAMP 数据类型的列不能存储这些值。
  • 如果thedate 是一个文本列,您将得到准确的结果。 thedate 的数据类型到底是什么?
  • 而且,就其价值而言,您所展示的不是 PHP 代码。这是SQL代码。这里与 PHP 无关。
  • 如果thedate是一个字符串,用ORDER BY 0+thedate DESC把它转换成一个数字
  • @Akina “日期”列被定义为存储 unix ts 的 varchar,这就是它行为不正确的原因

标签: mysql unix-timestamp


【解决方案1】:

thedate 列是 VARCHAR 而不是 INT,一旦我将列更改为 INT,ORDER 就被更正了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多