在朋友的帮助下,我得到了一个跟踪不同统计数据并将其保存在SQL
数据库中的网页。
返回的信息之一是将最新分数提交到数据库的时间。它工作正常,但虚拟主机位于不同的时区,我无法更改该时区。
因此,我正在考虑将我们的查询更改为返回分数添加多长时间的查询。
当前代码:
$statement = $adapter->query("
select name,
SUM(score_1) as score_1,
SUM(score_2) as score_2,
SUM(score_3) as score_3,
(SUM(score_1)+SUM(score_2)+SUM(score_3)) as total,
DATE_FORMAT(MAX(creation_time), '%d %b %H:%i') as creation_time
from score_entry
WHERE DATE(creation_time) = CURDATE()
group by name ORDER BY total DESC");
它抓取过去一天(从今天 00:00 开始)存储的信息,我不确定这是否也受到不正确时区的影响。
经过大量搜索,我似乎找不到确切问题的解决方案。
我尝试在MySQL中设置时区,但它是Namecheap
共享主机,他们不允许这样做。
查看时区文档。
使用 SET time_zone = timezone;
命令,您将能够基于每个连接设置时区。
此外,将日期存储在TIMESTAMP
列中会使MySQL将时间转换为UTC,然后在您访问时将其转换回当前时区。因此,它使存储和检索时区与不可知。
使用已发布的解决方案在 PHP 脚本中设置时区。也可以使用 PHP 的日期函数向它发送要在查询中使用的日期时间。