Antes de escribir un Java Date en una columna SQL TIMESTAMP, ¿JDBC traduce la fecha de la zona horaria de la máquina virtual Java a la de la sesión de la base de datos?Antes de escribir una fecha de Java en una columna SQL TIMESTAMP, ¿JDBC traduce la fecha de la zona horaria de la JVM a la zona horaria de la sesión de la base de datos?
Por ejemplo, supongamos que la zona horaria de la máquina virtual Java es UTC y la zona horaria de la sesión de la base de datos es UTC-5. Si un programa Java intenta almacenar 2000-01-01 00:00:00
pasándolo a PreparedStatement#setTimestamp(int, Timestamp)
, de acuerdo con el estándar JDBC, ¿almacenará la base de datos TIMESTAMP '2000-01-01 00:00:00'
o TIMESTAMP '1999-12-31 19:00:00'
?
Las zonas horarias son (o deberían ser) solo relevantes para la presentación de fechas, no para el almacenamiento. Entonces no debe haber traducción. Sin embargo, esto es una suposición, no una respuesta. – RedGrittyBrick
Entonces RedGrittyBrick, ¿espera que la base de datos almacene 'TIMESTAMP '2000-01-01 00: 00: 00''? –
RedGrittyBrick, la zona horaria es relevante para las fechas si almacena la zona horaria. Sin embargo, una columna SQL TIMESTAMP no almacena la zona horaria, por lo que tiene sentido almacenar fechas independientes de la ubicación (es decir, relativas a la zona horaria UTC). –