My 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 中工作?
JDBC 驱动程序在检索或存储时间戳时必须使用本地时区,除非提供了具有特定时区的日历。
不幸的是,JDBC规范并不总是清楚驱动程序应该如何表现,而且看起来MySQL做错了。对于 MySQL,您可以通过在连接字符串serverTimeZone
和相关属性中指定一个或多个选项来强制使用它使用的时区。有关完整列表,请参阅 http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html。