【发布时间】:2021-07-03 10:06:02
【问题描述】:
我在 PHP 中使用 SQLITE 从包含 Unix 时间作为数字的数据库中按日期生成记录摘要,但它似乎没有为时区正确拆分记录。
我先把PHP时区设置为GMT+8:
date_default_timezone_set ("Asia/Makassar");
然后我做这个 SQLITE 查询:
SELECT DATE([datetime],'unixepoch', 'localtime') AS [date], COUNT (*) AS [number], SUM([duration]) AS [ds], MAX ([peak]) AS [pm], SUM ([total]) AS [ts] from $table WHERE datetime >= $period_start and datetime <= $period_end GROUP BY [date]
2021-07-02 没有记录,2021-07-03 有 11 条记录。他们在这里:
Time duration total peak
04:23:33 9:14 0.34 6.2
04:36:07 4:30 0.14 14.1
05:14:17 7:39 0.4 13.9
05:24:26 16:40 2.34 26.9
05:41:35 5:59 0.43 43.7
05:49:48 6:34 0.13 8
06:03:16 16:22 3.09 61.6
06:31:21 3:15 0.03 9
06:40:25 12:15 1.98 51.8
06:56:46 4:24 0.09 11.2
13:03:01 3:27 0.04 14.6
...这是我从 SQLITE 查询中得到的摘要:
Date No Dur Total Peak
2021-07-01 2 7:21 0.08 19
2021-07-02 6 50:36 3.78 44
2021-07-03 5 39:43 5.23 62
如您所见,2003 年 7 月 21 日的前 6 条记录(当地时间早上 6 点之前的记录)已移回前一天。在早上 6 点之前有记录的日子里,这种行为一直发生。
【问题讨论】:
-
如果从
DATE()中删除'localtime'会发生什么? -
@forpas 没有本地时间,情况更糟:摘要显示 2021-07-02 的 10 条记录。
-
我投票结束这个问题,因为没有解决方案。