正如在标题中所述,由于PHP date
函数和MySQL NOW()
函数的存在,我发现了一个问题(这是一个非常严重的问题)。恢复PHP和MySQL之间的时间戳差异
这是问题,在MySQL表我有一个名为aggiornamento
列,并命名为idesterno
外部ID列,其工作原理是这样的:
- 在插入时,它会通过MySQL的
CURRENT_TIMESTAMP
插入,和在idesterno
被插入过 - 在更新,它会检查使用PHP的
date
功能idesterno
和更新aggiornamento
这里的BIG问题(相信我,这真的是一个大问题):
的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小时(基于夏令时/冬令时),但我不能不知道我是否正确地做了这件事
P.S.表格条目正在由每隔5分钟运行的CRON更新
您是否尝试过在php.ini中设置date.timezone(http://php.net/manual/fr/datetime.configuration.php#ini.date.timezone)? – vincenth
@vincenth我需要用正确的时间戳替换数据库'aggiornamento'列,由于MySQL和PHP之间的时区不同,这实际上是错误的。我已经设置了PHP时区,但问题是纠正较旧的记录,而不是现在保存的记录。谢谢你的方式 – CapitanFindus