事情原由:个人有个开发测试用的阿里云服务器,这几天就要到期了。新注册了一个腾讯云账户,新用户2000多买了一台服务器。3年5M带宽(2核8G内存)。听网上文章说,mysql8性能比mysql5.6强一倍多,正好把之前的项目升级了一下数据库。结果就遇到这个时差问题。特意整理了一下文档。
1. 因为我的开发平台不能只用mysql,需要兼顾oracle数据库。所以我用了方案一。
2. 方案一【我比较喜欢用这种方式】
show variables like '%time_zone%';
- Mysql默认安装就是这2个值。
- Central Standard Time (CST),中央标准时间
- Time_zone 的值为 SYSTEM,表示操作系统所在的时区
- 代码里面对日期型,和时间型分别加上,GMT+8。
- Jdbc的连接串,指定serverTimezone=Asia/Shanghai
jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/uadp6?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
3. oracle的数据库时区设置
在Oracle客户端操作时区,如果显示是东8区。。我们的加注解的代码就不会差8小时。。
-- 查询系统时区和session时区
SELECT DBTIMEZONE, SESSIONTIMEZONE FROM DUAL;
。