首页 > 解决方案 > PHP sqlite sql问题

问题描述

我有一个包含使用文本的日期/时间字段的数据库。它的类型为DATE/TIME. 2020-01-21 19-33-22Z在数据库浏览器中查看时看起来像“ ”。我想按DESC日期/时间顺序订购表格。使用 DB Browser,我可以执行如下所示的 SQL 语句:

SELECT * FROM LOG ORDER BY QSODATE DECS

该语句在 DB Browser 中有效,但在我的 PHP 7.3.6 环境中无效。当我运行 PHP 程序时,我没有收到任何错误,我确实获得了与表的连接,并且可以从表中提取数据,但顺序不正确。订单看起来像没有调用订单的原始表。

2020 年 1 月 2 日从 DB 浏览器编辑 :结果:2480 毫秒内返回 7251 行在第 1 行:SELECT * FROM LOG ORDER by qsodate DESC

这导致此部分顶行不正确:20200122192000960 xx3xxx 40m FT8 2020-01-21 22:35:00Z

整个记录将毫无意义,但此片段包含我尝试设置订单的日期和时间。现在我看到当我输入第一个示例时,我在“DESC”中交换了两个字母。对不起。

但是应该在顶部的日期/时间是:2020-01-31 18:26:00Z

示例中的日期/时间是未排序的日期/时间。

PHP 代码行是:

$result = $connection->query("SELECT * FROM LOG ORDER by qsodate DESC");

标签: phpsqlsqlite

解决方案


如果您可以将 qsodate 转换为有效的 sqlite 时间字符串(即“2020-01-21 19:33:22Z”,那么您可以将其转换为 unixepoch 并按时间顺序排序。

SELECT * FROM LOG ORDER by strftime('%s',qsodate) DESC

以供参考...

select strftime('%s',"2020-01-21 19:33:22Z") 'unixepoch'

Unixepoch
----------
1579635202

推荐阅读