有人知道MySQL中是否有这样的功能吗?
更新
这不会输出任何有效的信息:
mysql> SELECT @@global.time_zone, @@session.time_zone; +--------------------+---------------------+ | @@global.time_zone | @@session.time_zone | +--------------------+---------------------+ | SYSTEM | SYSTEM | +--------------------+---------------------+ 或者也许MySQL本身不知道确切time_zone使用了什么,那很好,我们可以PHP在这里介入,只要我能获得不像SYSTEM...
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
no change! +---------------------+ 1 row in set (0.00 sec)
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2010-05-29 10:32:32 | +---------------------+ 1 row in set (0.00 sec)
mysql> set time_zone = '+00:00'; Query OK, 0 rows affected (0.00 sec)
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2010-05-29 08:32:38 | <== Note, it changed! +---------------------+ 1 row in set (0.00 sec) 因此,了解服务器的时区是在该获取时间功能方面唯一重要的权利,比如now(),unix_timestamp()等; 它不会告诉您数据库数据中的日期正在使用哪个时区。您可能会选择假设它们是使用服务器的时区编写的,但是这种假设很可能是有缺陷的。要知道数据中存储的任何日期或时间的时区,您必须确保它们与时区信息一起存储,或者(就像我一样)确保它们始终位于格林尼治标准时间。
为什么假设数据是使用服务器的时区写入的?好吧,一方面,数据可能是使用设置了不同时区的连接写入的。该数据库可能已从一台服务器移至另一台服务器,其中服务器位于不同的时区(当我继承从德克萨斯州移至加利福尼亚州的数据库时遇到了这种情况)。但是,即使将数据写入服务器(具有当前时区),它仍然是模棱两可的。去年,在美国,夏令时于11月1日凌晨2:00被关闭。假设我的服务器使用太平洋时区在加利福尼亚州,我有这个价值2009-11-01 01:30:00在数据库中。那是什么时候?是太平洋标准时间11月1日凌晨1:30,还是太平洋标准时间11月1日凌晨1:30(一个小时后)?您绝对无法知道。道德:始终将日期/时间存储在GMT中(不执行DST),并在必要时将其转换为所需的时区。来源:stack overflow