在一台服务器上运行时:
mysql>;现在选择();
+---------------------+
|现在()|
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
一行一组(0.00秒)
在另一台服务器上:
mysql>;现在选择();
+---------------------+
|现在()|
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
一行一组(0.00秒)
我认为这可能有用:
MySQL中有三个可以设置时区的地方:
At[mysqld]部分的文件“my.cnf”中
默认时区='+00:00'
@@全局时区变量
要查看它们设置为什么值,请执行以下操作:
选择@@global.time\u时区;
要为其设置值,请使用以下任一选项:
设置全球时区='+8:00';
设置全球时区='欧洲/赫尔辛基';
设置@@global.time_zone='+00:00';
(使用“欧洲/赫尔辛基”等命名时区意味着您必须正确填充时区表。)
请记住,+02:00是一个偏移量Europe/Berlin是一个时区(有两个偏移量),而CEST是一个对应于特定偏移量的时钟时间
@@session.time\u区域变量
选择@@session.time\u区域;
要设置它,请使用以下任一选项:
设置时区='欧洲/赫尔辛基';
设置时区=“+00:00”;
设置@@session.time_zone=“+00:00”;
两者都可能返回系统,这意味着它们使用my.cnf中设置的时区
要使时区名称起作用,必须设置需要填充的时区信息表:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html. 我在回答中还提到了如何填充这些表
将当前时区偏移量设置为TIME
选择TIMEDIFF(现在(),UTC_时间戳);
如果您的时区为+2:00,它将返回02:00:00
要获取当前UNIX时间戳,请执行以下操作:
选择UNIX_TIMESTAMP();
选择UNIX_时间戳(NOW());
以UNIX时间戳的形式获取时间戳列
从'table\u name'中选择UNIX\u时间戳('TIMESTAMP')`
获取UTC日期时间列作为UNIX时间戳的步骤
从'table\u name'中选择UNIX\u时间戳(转换\u TZ('utc\u datetime','+00:00',@@session.time\u zone))`
注意:更改时区不会更改存储的datetime或timestamp,但会为现有的timestamp列显示不同的datetime,因为它们内部存储为UTC时间戳,外部显示在当前MySQL时区中
我在这里做了一个备忘:MySQL应该将其时区设置为UTC吗