【发布时间】: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