在编写 Java 之前 Date到 SQL TIMESTAMP列,是否 JDBC将 Java 虚拟机时区的日期转换为数据库 session 的日期?
例如,假设 Java 虚拟机时区是 UTC并且数据库 session 时区是 UTC-5 .如果 Java 程序试图存储 2000-01-01 00:00:00
通过将其传递给 PreparedStatement#setTimestamp(int, Timestamp)
,根据 JDBC 标准,数据库是否存储 TIMESTAMP '2000-01-01 00:00:00'
或 TIMESTAMP '1999-12-31 19:00:00'
?
最佳答案
不,JDBC只是关于客户端如何访问数据库的 API。对于时间戳存储,这必须取决于编写符合 JDBC API 标准的数据库驱动程序的组织。
Here's MySQL 的 PreparedStatement
实现的实现。他们似乎将 Java 的 JVM 时区带到了 MySQL 时区(检查 setTimestampInternal()
方法)。
关于java - 在将 Java 日期写入 SQL TIMESTAMP 列之前,JDBC 是否会将日期从 JVM 时区转换为数据库 session 时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4123534/