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