繁体   English   中英

php date_default_timezone_set time() VS mysql now()

[英]php date_default_timezone_set time() VS mysql now()

我正在开发在线购物系统。 只有英国客户可以从该网站下订单。

我想知道哪种方法最适合我?

date_default_timezone_set("欧洲/伦敦"); $时间=时间();

或者

现在使用 mysql function()?

有时客户可以 select 一次交货或收集。

注意:在英国,我们每年更改两次时间!

如果将时间发送到数据库,请使用 NOW(); 更少的开销,并且服务器时区希望总是正确且比 PHP 的时区更不易变。 如果我们只是在谈论显示,而没有实际进行数据库工作,那么仅仅为了获取时间而运行 mysql 查询就太过分了。

在 PHP 我通常执行以下操作:

date_default_timezone_set('GMT');

然后,在连接到 MySQL 服务器后,我执行以下查询:

'SET time_zone = "' . date_default_timezone_get() . '";'

这可以确保 PHP 和 MySQL 使用相同的时区,因此NOW()date('Ymd H:i:s')都应该产生相同的结果。

关于日光变化,它们应该不是问题(如果您保持软件更新)。

这个问题的一个重要考虑因素是 PHP 和 MySQL 之间的时间是否相同?

如果两者在同一台机器上运行,那么答案很可能是“是”,但如果它们在不同的机器上,那么它们很可能实际上是不同的。

考虑使用 MySQL NOW() function 将日期写入数据库的场景,另外您有一个查询,要求在过去 24 小时内创建的所有条目,使用 Z2FEC3923284A5C23AC138DA2 在查询中构建时间。 如果 PHP 服务器上的时间与 SQL 服务器上的时间不同步,则可能会错过报告中的记录(或连续几天将它们加倍,具体取决于它们不同步的方式) . 这可能导致错过交付等。

这样做的结果是,您应该注意与您对日期(尤其是日期时间)的使用保持一致。 使用 PHP 还是 MySQL 日期功能并不重要,但您应该尝试使用与更新时相同的平台进行查询。

当然,这种方式并不总是很关键,您可以务实地对待它 - 有时将 go 回 DB 太不方便了,只是为了找出时间是什么,但什么时候很重要。 你应该小心。

当然,如果两个系统在同一台服务器上,这不是问题,但您不应该假设情况总是如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM