0. 结论
mysql 时区不正确。代码中DATE属于GMT+8,mysql为GMT-6
1. CST是指哪个时间?
mysql执行,查看配置:
show variables like'%time_zone';
含义:mysql所在服务器时区为CST,mysql采用了系统时区,即服务器时区为CST。
但是CST实际上可能包含4个时区:
美国中部时间 Central Standard Time (USA) UTC-05:00 / UTC-06:00
澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30
中国标准时间 China Standard Time UTC+08:00
古巴标准时间 Cuba Standard Time UTC-04:00
上服务器使用date指令查看实际时间吧。。
date
Thu Apr 13 19:28:22 CST 2023
2. 实际开发时,通过代码插入到mysql的时间,实际上由jdbc的配置决定,例如jdbc url:
jdbc:mysql://0.0.0.0/mydb?useUnicode=true&characterEncoding=utf-8&createDatabaseIfNotExist=true&serverTimezone=Asia/Shanghai&useSSL=false&nullNamePatternMatchesAll=true
那么通过代码的DATE插入到数据库的时间时区属于中国时间UTC+08:00
数据库now()等函数仍以数据库配置时区为准(show variables like'%time_zone';)