0

我的爪哇:

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 中工作?

4

1 回答 1

2

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

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

于 2012-05-12T07:55:48.510 回答