【发布时间】:2013-06-28 04:46:34
【问题描述】:
我有一个每小时运行一次的 cronjob。更新数据集时,此 cronjob 应写入数据库。我在 php 中的 SQL 查询看起来像这样
INSERT INTO allstats (site_id, adformat_id, imps, clicks, conv, net_pub_comp, created_at, updated_at) VALUES (?,?,?,?,?,?,"'.date("Y-m-d H:i:s").'", "'.date("Y-m-d H:i:s").'")
我打印出日期(“Y-m-d H:i:s”),我得到 2013-06-28 04:05:17 这是完全正确的日期和时间。之后我在 mysql 中选择 now() 并且时间也是一样的。服务器上的时区设置为欧洲/柏林。该时区也在 php 和 mysql 中设置。在任何地方我都能找到合适的时间。
但是为什么插入日期时间列的值比实际时间早 2 小时?我希望有人有一个想法。谢谢你的帮助。
【问题讨论】:
-
cronjob 在自己的“环境”中运行。您可以在 crontab 文件的顶部设置环境变量(如
TZ),使其使用您想要的时区。 -
您好,感谢您的提示。但是如果我通过 php 在 ssh 中运行脚本,我也会遇到问题。所以像 TZ 这样的 var 不会有帮助吗?
-
保存到数据库中的时间应设计为 UTC,然后呈现为本地时间以供显示。