mysql数据库系统时区_mysql 杂记 —— 时区问题
查看时区:
SHOW VARIABLES LIKE "%time_zone%";
输出
Variable_name Value
system_time_zone CST
time_zone SYSTEM
分析:
这里有两个变量,其中 time_zone 是指 mysql 数据库的时区。默认为 SYSTEM,即等于服务器的系统时区。
system_time_zone 表示系统时区,因为我们的系统服务器是在中国,system_time_zone 为 CST(China Standard Time)。
这里有个坑,CST 除了表示中国时区,它还有更多含义:
美国中部时间 Central Standard Time (USA) UTC-06:00
澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30
中国标准时 China Standard Time UTC+08:00
古巴标准时 Cuba Standard Time UTC-04:00
比如说 jdbc 驱动在读取到 system_time_zone 是 CST 后,它会默认为 美国中部时间而不是中国标准时。中国标准时与美国标准时相差 14个小时,最终取出来的时间比你实际存入的时间少14个小时(因为夏令时的缘故有时会少13个小时)。
实验剖析:
测试环境:本地时区是 utc+8, 数据库时区是 utc。
表:
CREATE TABLE `tb1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(40) DEFAULT NULL,
`createTime` datetime DEFAULT NULL,
`updateTime` timestamp NULL DEFAULT NULL ON UPDATE current_timestamp(),
PRIMARY KEY (`id`)
)
案例1:
INSERT INTO table (dateCreated) VALUES (CURRENT_TIMESTAMP or NOW())
INSERT INTO tb1 (`name`, createTime, updateTime) VALUES ('lin', '2019-11-24 15:10', '2019-11-24 15:10');
INSERT INTO tb1 (`name`, createTime, updateTime) VALUES ('lin', NOW(), NOW())
查询结果为:(当前时间为 2019-11-27 15:28:13)
id name createTime updateTime
------ ------ ------------------- ---------------------
3 lin 2019-11-24 15:10:00 2019-11-24 15:10:00
4 lin 2019-11-27 07:25:13 2019-11-27 07:25:13
说明:无论是 datetime 还是 timestamp 直接插入字符串不会变,插入 now() ,now() 的时间显示的是数据库当前时区所在当前时间,即 utc 时间。(比本地时间少 8 小时)
案例2:
INSERT INTO table (dateCreated) VALUES (?)
LocalDateTime time = LocalDateTime.of(2019, 11, 27, 15, 42);
jdbcTemplate.update("INSERT INTO tb1 (`name`, createTime, updateTime) VALUES ('lin', ?, ?)", time, time);
查询结果为:
id name createTime updateTime
------ ------ ------------------- ---------------------
3 lin 2019-11-24 15:10:00 2019-11-24 15:10:00
4 lin 2019-11-27 07:25:13 2019-11-27 07:25:13
10 lin 2019-11-27 07:42:00 2019-11-27 07:42:00
说明:
jdbc 驱动读取数据库的时区信息,将本地时间转换为数据库时间,保存到数据库(比本地时间少 8 小时)
mysql数据库系统时区_mysql 杂记 —— 时区问题相关推荐
- mysql地区时间_mysql – 带时区的日期时间格式
首先,阅读DATETIME和TIMESTAMP类型in the mysql docs. 然后,决定使用哪种字段类型: >如果要在不进行MySQL执行时区转换的情况下提交,存储和检索相同的值,请使 ...
- mysql timezone上海_MySql的时区(serverTimezone)引发的血案
前言 mysql8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空. 血案现场 配置jdbc的URL:jdbc:mysql://[IP]:[PORT]/[DB]?c ...
- mysql数据库系统配置文件_MySQL数据库(6)----配置文件 my.cnf 的使用
1. 使用源码安装好MySQL后,其配置文件一般位于 /usr/local/my.cnf,可以使用如下命令查看查看配置文件的搜索顺序: root@javis:~$ mysqld --help --ve ...
- mysql的timestamp,unix_time和时区问题
今日,多次在不同时区的mysql数据库的timestamp字段上遇到各种问题,搅来搅去,越搅越乱, 故此写下此文记录,理清思路. 首先澄清一个概念: 所有的linux系统文件系统底层存储的都是UTC时 ...
- MySQL数据库修改时间、时区(包括阿里云控制台修改)!
# 查看数据库时区 mysql> show variables like '%time_zone%';+------------------+--------+| Variable_name | ...
- mysql cst_mysql中的CST时区问题
在项目操作过程发现了一个时区的问题,问题现象为sql打印的时间和数据库里面存储的时间不一样.后来发现问题原因为mysql的时区为CST.网上搜索了下CST时区,才发现这个时区已经被诟病已久.它居然能够 ...
- mysql安装后记得设置时区
原文地址:mysql中的CST时区问题_ljj125896的博客-CSDN博客_数据库时区cst 原因: 1.mysql中的CST时区问题 在项目操作过程发现了一个时区的问题,问题现象为sql打印的时 ...
- windows mysql.tar安装_MySQL的安装
MySQL数据库服务的推荐安装方法是通过MySQL网站直接下载安装.这种方法在一些不同的平台上都有支持,仅在不同的平台上的安装细节上略有不同.然而,其主要步骤都一样.请注意你需要管理好权限设置以完成此 ...
- mysql数据类型选择_MySQL学习笔记(二):MySQL数据类型汇总及选择参考
本文主要介绍了MySQL 的常用数据类型,以及实际应用时如何选择合适的类型. ******几个通用的简单原则:******* 1. 更小的通常更好.但是要确保没有低估需要存储的值的范围,如果无法确定哪 ...
- linux 查看tomcat时区,项目系统时区问题
Spring时区转换问题 spring转json的默认实现jackson中会根据时区去转换时间,而jackson的默认时区跟国内是相差8小时的. 解决方法: 重新设置当前项目地所在时区.使用注解的方法 ...
最新文章
- java itext 设计器_使用Java组件itext 生成pdf的介绍
- Go 语言编程 — 并发 — GMP 调度模型
- mockito_使用FizzBu​​zz和Mockito进行单元测试
- pytorch 检索数组
- sql必知必会(第四版) 学习笔记一
- mysql 启动事件 启动触发器功能
- scikit-learn学习笔记(二)load_files加载自己的文件
- 95-910-165-源码-FlinkSQL-Flink SQL 中的时间属性
- Python使用scipy进行多项式计算与符号计算
- Linux 以form表单形式上传文件
- 属于服务器端运行的程序_服务器端编程Java 引起人们的注意很大程度上始于 applet...
- 微信小程序 java网上购物商城系统
- 虚拟机使用主机摄像头 ” usb chicony lenovo easycamera 连接失败,驱动错误“
- homotopy-同伦_拔剑-浆糊的传说_新浪博客
- 高维空间中的体积(包含递归思想的初步理解)
- html css 忽略,HTML与CSS中易被忽略的基础知识点
- dis的前缀单词有哪些_以ir dis为前缀的单词各20个,要多种词性
- 万能命令:快捷直达你想要的在线工具
- matlab高斯投影坐标,基于matlab的高斯投影正反算与相邻带坐标换算程序设计
- 稿定设计怎么去除水印?