我有一个每小时运行一次的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中做了一个select now(),时间也是一样的。服务器上的时区设置为Europe / Berlin。那个时区也是在php和mysql中设置的。我到处都是合适的时间。
但为什么插入datetime列的值是实时的2小时?我希望有人有个主意。谢谢你的帮助。
答案 0 :(得分:2)
如果您要插入的日期时间是脚本执行的日期时间,为什么不在插入语句中使用NOW()
?
INSERT INTO allstats (site_id, adformat_id, imps, clicks, conv, net_pub_comp, created_at, updated_at)
VALUES (?,?,?,?,?,?,NOW(),NOW())
更少的绑定和传递参数。
答案 1 :(得分:0)
MySQL日期/时间应存储在UTC
时区。您的应用程序应计算差异并将该日期/时间转换为适当的时区。