Ten eerste verwar je java.util
met java.sql
. Bij gebruik van PreparedStatement#setDate()
en ResultSet#getDate()
, je hebt java.sql.Date nodig
. Analoog, bij gebruik van PreparedStatement#setTimestamp()
en ResultSet#getTimestamp()
je hebt java.sql.Timestamp
.
Ten tweede is het belangrijk om te begrijpen dat java.sql.Date
staat alleen voor de datum (jaar, maand, dag) en niets minder of meer. Dit moet worden toegewezen aan een SQL DATE
veld soort. De java.sql.Timestamp
staat voor de tijdstempel (jaar, maand, dag, uur, minuut, seconde, milliseconde), precies zoals de java.util.Date
en java.util.Calendar
doet. Dit moet worden toegewezen aan een SQL TIMESTAMP
of DATETIME
veldtype.
Wat betreft de tijdzones, u hebt deze nodig wanneer de database geen tijdzone-informatie opslaat (dus alle tijdstempels worden opgeslagen in UTC (GMT)). U kunt dan een Kalender
. doorgeven waarin informatie over de huidige tijdzone staat, zodat de JDBC-driver de UTC-tijdstempel kan aanpassen aan de tijdstempel die overeenkomt met de tijdzone. Als het bijvoorbeeld GMT+1 is, zal de JDBC-driver een uur aan de tijdstempel toevoegen voordat hij terugkeert.