这在PHP中非常有用
date_default_timezone_set('my/timezone');
$actualDate = date('Y-m-d');
现在做查询时,我喜欢做
INSERT INTO articles (title, insert_date) VALUES ('My Title', now())
问题在于,MySQL中的now()
与在PHP中计算的内容不同(因此与设置的时区相对)。
有没有办法,例如SQL查询,设置MySQL的默认时区?
由于
答案 0 :(得分:3)
http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html
如果您具有SUPER权限,则可以使用以下语句在运行时设置全局服务器时区值:
mysql> SET GLOBAL time_zone = timezone;
每个连接时区。连接的每个客户端都有自己的时区设置,由会话time_zone变量给出。最初,会话变量从全局time_zone变量中获取其值,但客户端可以使用以下语句更改自己的时区:
mysql> SET time_zone = timezone;
答案 1 :(得分:1)
您可以尝试的是以UTC格式存储所有日期/时间。所以,你会使用
date_default_timezone_set('UTC');
$actualDate = date('Y-m-d');
和
INSERT INTO articles (title, insert_date) VALUES ('My Title', UTC_TIMESTAMP())
然后,您可以在显示之前将UTC日期/时间转换为用户的时区。
答案 2 :(得分:0)
我通常将MySQL服务器设置为格林威治标准时间,然后在PHP中使用gmdate而不是date。将所有内容保留在GM时间中,这样如果您移动到另一台服务器,或者在不同的时区内有2个,那么事情就不会搞砸了。