【发布时间】:2017-01-22 04:37:59
【问题描述】:
正如标题中已经说过的,我发现了一个问题(这是一个非常大的问题),因为 PHP date 函数和 MySQL NOW() 函数。
这就是问题所在,在 MySQL 表中,我有一个名为 aggiornamento 的列和一个名为 idesterno 的外部 ID 列,其工作方式如下:
- 在插入时,它被 MySQL 的
CURRENT_TIMESTAMP插入,并且idesterno也被插入 - 更新时,它会检查
idesterno并使用 PHP 的date函数更新aggiornamento
这是大问题(相信我,这确实是个大问题):
MySQL NOW() 和 CURRENT_TIMESTAMP 返回正确的时间,2016-09-04 13:20:00,但 PHP 也返回正确的)另一个日期,即 2016-09-04 11:20:00
所以,当我在数据库中插入新记录时,一切正常,但当他更新时,麻烦就来了。
我发现不同之处在于时区,MySQL 有我的 (CEST) 而 PHP 没有,即使它们在同一台服务器上(是的,真的很有趣),使用 date_default_timezone_get 检查.
所以,最后,我需要知道的是:
我知道哪个更新了,但我不知道CURRENT_TIMESTAMP和date('Y-m-d H:i:s)之间的确切时差。
我猜最多大约 1 或 2 小时(基于夏季/冬季时间),但我无法在不知道我是否做得对的情况下编辑这个时间
附:表条目由每 5 分钟运行一次的 CRON 更新
【问题讨论】:
-
你试过在 php.ini 中设置 date.timezone (php.net/manual/fr/datetime.configuration.php#ini.date.timezone) 吗?
-
@vincenth 我需要用正确的时间戳替换 db
aggiornamento列,这实际上是错误的,因为 MySQL 和 PHP 之间的时区不同。我已经设置了 PHP 时区,但问题是更正旧记录,而不是现在保存的记录。顺便谢谢你
标签: php mysql timezone timestamp