Först blandar du ihop java.util
med java.sql
. När du använder PreparedStatement#setDate()
och ResultSet#getDate()
, du behöver java.sql.Date
. Analogt, när du använder PreparedStatement#setTimestamp()
och ResultSet#getTimestamp()
du behöver java.sql.Timestamp
.
För det andra är det viktigt att förstå att java.sql.Date
representerar endast datumet (år, månad, dag) och inget mindre eller mer. Detta ska mappas till en SQL DATE
fälttyp. java.sql.Timestamp
representerar tidsstämpeln (år, månad, dag, timme, minut, sekund, millisekund), precis som java.util.Date
och java.util.Calendar
gör. Detta ska mappas till en SQL TIMESTAMP
eller DATETIME
fälttyp.
När det gäller tidszonerna behöver du det när databasen inte lagrar tidszonsinformation (alltså alla tidsstämplar lagras i UTC (GMT)). Du kan sedan skicka en Kalender
som innehåller information om den aktuella tidszonen, så att JDBC-drivrutinen kan justera UTC-tidsstämpeln till tidsstämpeln som överensstämmer med tidszonen. Om det till exempel är GMT+1, kommer JDBC-drivrutinen att lägga till en timme till tidsstämpeln innan han återvänder.