php - 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");
解决方案
如果您可以将 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
推荐阅读
- javascript - 在 console.log 中打印字符串而不是数字
- javascript - 让 NextJS 图像组件和 @svgr/webpack 一起玩得很好
- python - 根据其他列表中的条件创建列表
- flutter - 试图做一个渐变,但它出来是白色的?我的代码有什么问题?
- python - 根据 django 中 loaddata 上的另一个字段验证 django 字段
- phpword - 创建带有半径边框的 TextBox
- linux - 您将如何编写在 Linux 上运行的 TCPIP 服务器应用程序以同时绑定到多个端口?
- mapbox - 我可以访问 Mapbox 的路网信息吗?
- python - 获取文档最新版本的路径文件
- azure-devops - 如何使用 Azure DevOps 扩展表实现无限滚动