繁体   English   中英

有没有相当于PHP的`date_default_timezone_set()`在MySQL中有效?

[英]Is there an equivalent to PHP's `date_default_timezone_set()` that works in MySQL?

这在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的默认时区?

谢谢

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;

您可以尝试的是以UTC格式存储所有日期/时间。 所以,你会用

date_default_timezone_set('UTC');
$actualDate = date('Y-m-d');

INSERT INTO articles (title, insert_date) VALUES ('My Title', UTC_TIMESTAMP())

然后,您可以在显示之前将UTC日期/时间转换为用户的时区。

我通常将MySQL服务器设置为格林威治标准时间,然后在PHP中使用gmdate而不是date。 将所有内容保留在GM时间中,这样如果您移动到另一台服务器,或者在不同的时区中有2个,那么事情就不会搞砸了。

暂无
暂无

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

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