11

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

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

它输出(CEST是我的本地时区,比 UTC 早 2 小时):

Mon May 07 23:59:12 CEST 2012

期望值为:

Mon May 07 21:59:12 CEST 2012

我在 JDBC URL 中使用了这三个参数(Europe/Berlin与 相同CEST):

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

是我的缺陷还是应该在 JDBC 驱动程序中额外配置一些东西?我正在使用mysql:mysql-connector-java:5.1.20.

4

1 回答 1

14

使用这些JDBC URL 参数,它可以工作:

useGmtMillisForDatetimes=true
useJDBCCompliantTimezoneShift=true
useLegacyDate‌timeCode=false
useTimezone=true
serverTimezone=UTC
于 2012-05-08T09:38:26.660 回答