引言
查看数据库数据,发现表中自动生成的创建时间不正确,故先使用SELECT CURRENT_TIMESTAMP;
sql验证自动生成的时间是否是不正确的。经验证确定是自动生成的时间不正确,进而想到了对时间进行校正。
校正过程
首先查看数据库时间的时区是否是当地的。
SELECT @@global.time_zone, @@session.time_zone;
经查看确认数据库自动生成时间戳所使用的时区是system系统时区。
依赖系统时区耦合性以及不太好判断其准确时区。因此将数据库时间戳所使用的时区进行固定。
SET GLOBAL time_zone = ‘Asia/Shanghai’;
SET GLOBAL time_zone = ‘+8:00’;
SET time_zone = ‘Asia/Shanghai’; 只对当前会话的时间戳有影响不会对其他连接的会话产生影响。所以不使用这条sql进行更改。
拓展
SELECT NOW(); – 显示当前日期和时间
SELECT CURDATE(); – 显示当前日期
SELECT CURTIME(); – 显示当前时间
SELECT DATE_FORMAT(NOW(), ‘%Y-%m-%d %H:%i:%s’); – 格式化时间
mysql进行数据库连接的时候也可以进行时区的转化倘若连接的时候进行了时区转换设置+8时区,数据库又设置了+8时区则会使得时间多8h
url: ${MYSQL_URL:jdbc:mysql://localhost:13306/device?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8}
serverTimezone=GMT%2B8
此配置可以将数据库表中标准时间转为上海时间 +8