在将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/

10-11 22:29
查看更多