1

我有一个每小时运行一次的 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").'")

我打印出日期(“Ymd H:i:s”),我得到 2013-06-28 04:05:17 是完全正确的日期和时间。之后我在 mysql 中选择 now() 并且时间也是一样的。服务器上的时区设置为欧洲/柏林。该时区也在 php 和 mysql 中设置。我在任何地方都能找到合适的时间。

但是为什么插入日期时间列的值比实际时间早 2 小时?我希望有人有一个想法。谢谢你的帮助。

4

2 回答 2

2

如果您要插入的日期时间是脚本执行的日期时间,为什么不在NOW()您的插入语句中使用呢?

INSERT INTO allstats (site_id, adformat_id, imps, clicks, conv, net_pub_comp, created_at, updated_at) 
VALUES (?,?,?,?,?,?,NOW(),NOW())

绑定和传递的参数更少。

于 2013-06-28T04:55:21.920 回答
1

MySQL 日期/时间应存储在UTC时区中。您的应用程序应计算差异并将该日期/时间转换为适当的时区。

于 2013-06-28T04:53:23.000 回答