Spring Boot Test时区异常偏移问题求助
ClickHouse JDBC时区偏移导致Date类型转换异常
- 使用JPA(包含Hibernate 6),由于数据库列定义为
DATE,JPA内部会强制使用java.util.Date类型,无法替换为其他更合适的日期类型 - 已在无JPA的纯JDBC场景下复现问题,排除JPA本身的影响
- ClickHouse服务器与Java应用均配置为UTC时区,但测试环境中执行
current_date()查询并转换为Date类型时,得到的结果是2024-02-26 17:00,而当时实际UTC时间为2月27日(测试服务器操作系统时区为GMT+7);生产环境运行相同代码无异常
更新1:将测试服务器操作系统时区改为UTC后,问题消失,但通过VM参数-Duser.timezone=UTC指定时区无效果
更新2:调试ClickHouse JDBC驱动核心代码发现,驱动内部创建的Calendar实例使用了GMT+7时区,但在测试控制器中手动实例化的Calendar却是UTC时区
临时绕过方案:给JDBC连接添加额外参数use_server_time_zone=false&client_time_zone=UTC&use_time_zone=UTC,解决了时区错误创建的问题,但仍不明确根本原因:比如use_server_time_zone参数为何没有获取服务器的UTC时区,反而使用了客户端操作系统的默认时区
内容的提问来源于stack exchange,提问作者Hett
相关产品推荐
相关产品推荐

