Mysql 时区修改问题(冬令时夏令时)

 2023-09-07 阅读 25 评论 0

摘要:1.起因: 前两天发现有一台mysql的测试机环境出现了和系统时区不一致的情况,情况如下: mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+-----

1.起因:

前两天发现有一台mysql的测试机环境出现了和系统时区不一致的情况,情况如下:

mysql> show variables like '%time_zone%';  
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | PDT    |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set (0.01 sec)

[root@test2 ~]# date
2017年 01月 18日 星期三 01:15:16 PST

由于PST和PDT之间有夏令时的问题会导致一些时间相差一个小时。(PST与PDT都是美国时间但是中间有一个是含有夏令时的,所以在夏令时的时候回提前一个小时)

夏令时是几月到几月?

2.解决方案:

my.cnf配制文件修改:

可以通过修改my.cnf
在 [mysqld] 之下加

default-time-zone=timezone

数据库时区设置、来修改时区。如:

default-time-zone = '+8:00'

通过命令:

set time_zone = timezone

哪个时区有夏令时。

比如北京时间(GMT+0800)

set time_zone = '+8:00';

eg:mysql> set time_zone = '+8:00';   
Query OK, 0 rows affected (0.17 sec)mysql> select now(); 
+---------------------+
| now()               |
+---------------------+
| 2016-06-23 16:32:53 |
+---------------------+
1 row in set (0.00 sec)mysql> set time_zone = '-8:00';   
Query OK, 0 rows affected (0.00 sec)mysql> select now();   
+---------------------+
| now()               |
+---------------------+
| 2016-06-23 00:33:21 |
+---------------------+
1 row in set (0.00 sec)

mysql 数据库中的时区信息默认为空:
mysql> show tables like "%time%";
+---------------------------+
| Tables_in_mysql (%time%) |
+---------------------------+
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
+---------------------------+
5 rows in set (0.00 sec)

插入后出现:(切记千万不要drop这个表只能清空,否则你以后都无法添加了,或者你需要重新新建这个表。建议不要否则重建特别的恶心)

mysql> SELECT * FROM time_zone_name WHERE name LIKE 'America/%' limit 10;
+----------------------------------+--------------+
| Name                             | Time_zone_id |
+----------------------------------+--------------+
| America/Adak                     |           54 |
| America/Anchorage                |           55 |
| America/Anguilla                 |           56 |
| America/Antigua                  |           57 |
| America/Araguaina                |           58 |
| America/Argentina/Buenos_Aires   |           59 |
| America/Argentina/Catamarca      |           60 |
| America/Argentina/ComodRivadavia |           61 |
| America/Argentina/Cordoba        |           62 |
| America/Argentina/Jujuy          |           63 |
+----------------------------------+--------------+
10 rows in set (0.00 sec)

测试结果:
美国不仅有时区,还有夏令时,冬令时,提前一小时,或者减慢一小时(在时区时间基础上)
美国2016年夏令时将于2016年03月13日当地时间早上02:00(北京时间14:00)开始,至2016年11月6日结束,届时美国的交易时间将较冬令时提前1个小时

mysql>  SELECT CONVERT_TZ('2016-03-13 01:30:00','-8:00','America/Los_Angeles') AS TIME\G
*************************** 1. row ***************************
TIME: 2016-03-13 01:30:00
1 row in set (0.00 sec)mysql> SELECT CONVERT_TZ('2016-03-13 02:30:00','-8:00','America/Los_Angeles') AS TIME\G
*************************** 1. row ***************************
TIME: 2016-03-13 03:30:00
1 row in set (0.00 sec)


付时区偏移差:

GMT 格林威治标准时间 GMT
UTC 全球标准时间 GMT
ECT 欧洲中部时间 GMT+1:00
EET 东欧时间 GMT+2:00
ART (阿拉伯)埃及标准时间 GMT+2:00
EAT 东非时间 GMT+3:00
MET 中东时间 GMT+3:30
NET 近东时间 GMT+4:00
PLT 巴基斯坦拉合尔时间 GMT+5:00
IST 印度标准时间 GMT+5:30
BST 孟加拉国标准时间 GMT+6:00
VST 越南标准时间 GMT+7:00
CTT 中国台湾时间 GMT+8:00
JST 日本标准时间 GMT+9:00
ACT 澳大利亚中部时间 GMT+9:30
AET 澳大利亚东部时间 GMT+10:00
SST 所罗门标准时间 GMT+11:00
NST 新西兰标准时间 GMT+12:00
MIT 中途岛时间 GMT-11:00
HST 夏威夷标准时间 GMT-10:00
AST 阿拉斯加标准时间 GMT-9:00
PST 太平洋标准时间 GMT-8:00
PNT 菲尼克斯标准时间 GMT-7:00
MST 西部山脉标准时间 GMT-7:00
CST 中部标准时间 GMT-6:00
EST 东部标准时间 GMT-5:00
IET 印第安那东部标准时间 GMT-5:00
PRT 波多黎各和美属维尔京群岛时间 GMT-4:00
CNT 加拿大纽芬兰时间 GMT-3:30
AGT 阿根廷标准时间 GMT-3:00
BET 巴西东部时间 GMT-3:00
CAT 中非时间 GMT-1:00


版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/21714.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息