Nejprve si pletete java.util
s java.sql
. Při použití PreparedStatement#setDate()
a ResultSet#getDate()
, potřebujete java.sql.Date
. Analogicky při použití PreparedStatement#setTimestamp()
a ResultSet#getTimestamp()
potřebujete java.sql.Timestamp
.
Za druhé, je důležité pochopit, že java.sql.Date
představuje pouze datum (rok, měsíc, den) a nic méně nebo více. Toto má být mapováno na SQL DATE
typ pole. java.sql.Timestamp
představuje časové razítko (rok, měsíc, den, hodina, minuta, sekunda, milisekunda), přesně jako java.util.Date
a java.util.Calendar
dělá. Toto má být namapováno na SQL TIMESTAMP
nebo DATETIME
typ pole.
Pokud jde o časová pásma, potřebujete je, když databáze neuchovává informace o časovém pásmu (všechny časové značky jsou tedy uloženy v UTC (GMT)). Poté můžete předat Kalendář
ve kterém obsahuje informace o aktuálním časovém pásmu, takže ovladač JDBC může upravit časové razítko UTC na časové razítko odpovídající časovému pásmu. Pokud je to například GMT+1, pak ovladač JDBC přidá k časové značce jednu hodinu, než se vrátí.