JDBC以UTC格式提供MySQL日期时间

时间:2012-05-09 18:34:35

标签: mysql jdbc timezone

我的Java:

Date parsedDate = dateFormat.parse(timestamp);
Timestamp dbTimestamp = new Timestamp(parsedDate.getTime());       
insertTimestampPreparedStatement.setTimestamp(3, dbTimestamp);

PhpMyAdmin / MySQL总是在我当地时间显示,即使我做

insertTimestampPreparedStatement.setTimestamp(3, dbTimestamp, Calendar.instance(TimeZone.getTimeZone("UTC"));

我不确定MySQL是否知道他们知道时区,我检查这个的唯一方法是直接在phpmyadmin中将时区行更新为NOW(),然后它向我展示了GMT的时间。所以要么phpmyadmin / mysql中存在错误,要么我的代码没有在正确的时区内通过时间戳发送。

如何让它在UTC中运行?

1 个答案:

答案 0 :(得分:2)

JDBC驱动程序必须在检索或存储时间戳时使用本地时区,除非提供具有特定时区的日历。

不幸的是,JDBC规范并不总是清楚驱动程序应该如何表现,看起来MySQL做错了。对于MySQL,您可以通过在连接字符串serverTimeZone和相关属性中指定一个或多个选项来强制使用它的时区。有关完整列表,请参阅http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html