日期时间格式的mysql列有2小时的差异

时间:2013-06-28 04:46:35

标签: php mysql date datetime

我有一个每小时运行一次的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小时?我希望有人有个主意。谢谢你的帮助。

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时区。您的应用程序应计算差异并将该日期/时间转换为适当的时区。