Snowflake JDBC Driver 3.13.20时区与日期格式化问题求助
Snowflake JDBC驱动3.13.20版本升级时区与日期格式问题求助
近期将Snowflake JDBC驱动从3.13.19版本升级至3.13.20后,遇到了时区与日期格式化相关的意外问题,在官方发布说明及文档中未找到相关变更信息,特此向社区求助。
具体问题
- 升级至3.13.20版本后,使用
getDate()方法从结果集中获取的日期值出现8或7小时的差异,该差异与时区变更直接相关。此前日期值与JVM时区完全一致,但现在明显处于不同时区。 - 现有代码因Snowflake要求的日期时间格式变更出现兼容性问题,但3.13.20版本的发布说明和文档中未找到任何关于这些时区变更或所需日期时间格式的明确信息。
排查与怀疑
我发现Snowflake更新了所使用的时区数据库(TZDB)版本,怀疑正是TZDB版本变更导致了日期值不一致和意外时区差异问题,但同样在3.13.20版本的发布说明和文档中未找到相关变更及影响的明确说明。
编辑补充:此前曾尝试将驱动从3.12.17版本升级至3.13.32版本,后续定位到问题首次出现在3.13.20版本,因此重点排查该版本的发布说明与文档,但未找到相关细节。
版本间数据差异示例
以下是不同驱动版本返回的日期时间数据对比,各字段格式定义如下:
Date = yyyy-MM-dd HH:mm Z TimeNoMS = HH:mm:ss.SSS Z TimeMS = HH:mm:ss.SSS Z TimestampNTZ_NoMS = yyyy-MM-dd HH:mm:ss.SSS TimestampNTZ_MS = yyyy-MM-dd HH:mm:ss.SSS TimestampTZ_NoMS = yyyy-MM-dd HH:mm:ss.SSS Z TimestampTZ_MS = yyyy-MM-dd HH:mm:ss.SSS Z TimestampLTZ_NoMS = yyyy-MM-dd HH:mm:ss.SSS Z TimestampLTZ_MS = yyyy-MM-dd HH:mm:ss.SSS Z Date |TimeNoMS |TimeMS |TimestampNTZ_NoMS |TimestampNTZ_MS |TimestampTZ_NoMS |TimestampTZ_MS |TimestampLTZ_NoMS |TimestampLTZ_MS | 3.12.17 #2021-01-16 00:00 +0000 22:46:42.000 +0000 22:46:42.123 +0000 2021-01-16 13:46:42.000 2021-01-16 13:46:42.123 2021-01-16 22:46:42.000 +0000 2021-01-16 22:46:42.123 +0000 2021-01-16 22:46:42.000 +0000 2021-01-16 22:46:42.123 +0000 3.13.32 #2021-01-16 01:00 +0100 22:46:42.000 +0100 22:46:42.123 +0100 2021-01-16 14:46:42.000 2021-01-16 14:46:42.123 2021-01-16 15:46:42.000 +0100 2021-01-16 15:46:42.000 +0100 2021-01-16 23:46:42.000 +0100 2021-01-16 23:46:42.123 +0100
可以看到,3.13.32版本开始返回的时区标识变为+0100,部分字段还出现了1小时的时间差。
求助内容
- 有没有其他使用Snowflake JDBC驱动的用户,在升级至3.13.20版本后遇到过类似的日期值不一致、日期时间格式变更或TZDB版本更新相关的问题?
- 如果遇到过,是否找到了解决方法或规避方案?
- 如果有人发现过3.13.20版本中关于时区变更、TZDB版本更新及日期时间格式要求的相关信息,欢迎分享给社区。
提前感谢大家的宝贵帮助与见解!
内容的提问来源于stack exchange,提问作者Jan Jelínek
相关产品推荐
相关产品推荐

