编辑默认mysql服务器时区,在mysql配置文件中设置时区
本文内容列表:
- 1.我公司使用亚马逊云AWS。如何修改RDS-MYSQL AWS数据库的默认时区?
- 2、MySQL中如何调整时区
- 3、MySQL:一文了解时区和时区
- 4. 如何在MySQL中将时区设置为格林威治标准时间。
我们公司使用亚马逊云AWS。如何修改RDS-MYSQL AWS数据库的默认时区?
您可以通过修改AWS参数组参数:time_zone来修改MySQL时区。关于编辑Amazon AWS参数:AWS参数是动态的,因此修改后立即生效。
不适用于已建立的连接;它仅适用于新创建的连接。
如果创建只读副本,可以为主从设置不同的时区。
如果从快照恢复数据库,时区将设置为UTC
使用以下参数设置时区:
1。绝对偏移——绝对偏移示例:alter session set time_zone = '-05:00'
2。数据库时区 -- 数据库时区 示例:alter session set time_zone = dbtimezone 这是默认数据库时区
3。 os local time zone - 操作系统的本地时区示例:alter session set time_zone = local 获取系统的本地时区
4。命名区域--直接通过名称指定时区。示例:alter session set time_zone = 'america/new_york'
MySQL:一篇文章了解时区和时区
以下问题一直困扰着您:
MySQL安装规范中应该设置什么时区?
JAVA应用读取的时间与北京时间相差14个小时。为什么?怎么处理呢?
对于已经运行了一段时间的业务,更改MySQL时区会影响存储的时间类型数据吗?
是否有可能在迁移数据时,时间类型数据的时区不正确?
...
看完这篇文章你就可以解决以上疑惑了。首先出现的是与时区相关的启动参数和系统变量。
如果想在 MySQL 启动时指定时区,则应使用启动参数:default-time-zone,例如:
启动后,我们会看到控制时区的系统变量,其中 time_zone变量控制时区。在 MySQL 中,可以在运行时使用 set 命令修改(注意:不能写入 my.cnf):
启动参数和系统变量的可用值格式相同:
system_time_zone 变量只有全局值而没有会话值,并且不能动态编辑:当MySQL启动时,它会尝试自动确定服务器的时区并使用它来设置system_time_zone系统变量,然后该变量将保持不变。当 time_zone='system' 时,这是使用的时区。示例中 time_zone 为 CST,CST 为 RedHat 上的东八区:
总结一下,有两点:
不仅要 select now(),还要插入 ..values(now()) ,而DEFAULT属性CURRENT_TIMESTAMP字段受此影响:
timestamp数据类型会存储当前会话的时区信息,读取时会根据当前会话的时区进行转换;和 datetime data 类型中插入的值将是重新加载的值,无论时区如何。也可以理解为存储的数据不会改变,只是时间戳类型数据在读取时会根据时区进行转换:
关于时区的所有显而易见的事情都在上面提到了。我们前面提到的问题是黑暗中的体验。
1. MySQL安装规范应该设置什么时区?
对于家庭业务,在my.cnf中写入default-time-zone='+08:00',并确认其他地区和开发者对应的时区。
为什么不设置到系统中呢?使用系统时间似乎也是一个不错的选择,而且问题较少。不推荐的原因有两个:
2、JAVA读取的时间与北京时间相差14个小时。为什么?怎么处理呢?
这通常是因为JDBC参数中没有为连接设置时区属性(由serverTimezone参数指定),并且MySQL中没有设置全局时区,所以MySQL默认使用系统时区,即。国家标准时间。这样,与MySQL创建的连接的会话时区就是CST。我们已经提到,CST 是 RedHat 上的 +08:00 时区,但它实际上总共可以代表 4 个时区:
JDBC 在将 CST 解析为美国标准时间时使用它,这会导致时区错误。解决方案很简单:首先,按照上面的规范,将 MySQL 的时区显式设置为“+08:00”;其次,为 JDBC 设置正确的服务器时区。
3、如果业务已经运行了一段时间,更改MySQL时区是否会影响存储的时间类型数据?
完全不会,只会影响时间戳数据类型的读取。这里不得不提一下为什么要使用时间戳?使用日期和时间不是很好吗?范围更大,存储空间其实差别很大。赶快将其添加到开发规范中吧。
4. 迁移数据时是否会出现时间类型数据的时区不正确的情况?
这个确实存在。
如何避免? mysqldump还提供了--skip-tz-utc参数,表示数据导出连接不设置UTC时区,使用MySQL全局时区系统变量的值。
mysqldump在导出SQL文件时其实也默认使用UTC时区,并且在导出的SQL文件头中会有会话时区信息。这样可以保证导入和导出SQL文件时使用相同的时区,从而保证数据的时区。正确(而导出的csv文件显然不能携带此信息)。需要注意的是,--compact参数会删除sql文件中的所有头信息,所以记住:--compact参数必须与--skip-tz-utc一起使用。
如何在MySQL中将时区设置为格林威治标准时间。
MySQL时区默认设置为服务器时区。
查看:
复制代码代码如下:
mysql SHOW VARIABLES LIKE '%time_zone%';
+--------------------------------+- -------+
|变量名|价值|
+----------------+--------+
|系统时区 |国家标准|
|时区 |系统|
+----------------+--------+
2 行 IN SET(0.00 秒)
是 通过编辑来编辑时区my.cnf 并将其添加到 [mysqld] 下。
default-time-zone=timezone
例如:
default-time-zone='+8:00'
编辑后不要忘记重新启动msyql。
一定要在[mysqld]下添加,否则会报错:unknown variable 'default-time-zone=+8:00′
也可以输入命令:
SET time_zone= timezone
例如:北京时间(GMT+0800)
SET time_zone='+8:00'
这个和php中设置时区有点不同。例如php中的北京时间为:
date_default_timezone_set( 'Etc/GMT-8');
美国时间 pst (GMT-08:00)
SET time_zone = '-8:00';
复制代码代码如下:
mysql SET time_zone = '+8:00';
查询正常,0 行受影响(0.00 秒)
mysql SELECT now();
+---------------- ----+
|现在() |
+----------------------+
| 29/12/2008 11:26:36 |
+---------------------+
1 行 V SET (0.00s)
mysql SET time_zone = '- 8: 00' ;
查询正常,0 行受影响(0.00 秒)
mysql SELECT now();
+--------------------+
|现在() |
+--------------- ------+
| 2008 年 12 月 28 日 19:27:09 |
+-------------------------+
1 行 IN SET(0.00 秒)

版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
