getTimestamp()则时区converstion两次在MySQL JDBC连接器?(getT

2019-07-29 07:10发布

我有类型的列DATETIME室内用一个值2012-05-07 19:59:12在MySQL数据库。 我试图从数据库取回这个值,假设它存储在UTC时区:

Calendar cal = Calendar.getInstance(new SimpleTimeZone(0, "UTC"));
Date date = resultSet.getTimestamp(1, cal);
System.out.println(date);

它输出( CEST是我的本地时区,为协调世界时的2小时):

Mon May 07 23:59:12 CEST 2012

期望值是:

Mon May 07 21:59:12 CEST 2012

我使用的JDBC URL这三个PARAMS( Europe/Berlin是一样的CEST ):

..&useGmtMillisForDatetimes=true&useTimezone=true&serverTimezone=Europe/Berlin

这是我的缺陷或东西必须另外在JDBC驱动程序配置的? 我使用mysql:mysql-connector-java:5.1.20

Answer 1:

有了这些JDBC网址参数它的工作原理:

useGmtMillisForDatetimes=true
useJDBCCompliantTimezoneShift=true
useLegacyDate‌timeCode=false
useTimezone=true
serverTimezone=UTC


文章来源: getTimestamp() does timezone converstion twice in MySQL JDBC connector?
标签: java mysql jdbc