Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ResultSet.getTimestamp(date) vs. ResultSet.getTimestamp(date, Calendar.getInstance(tz))

Erstens verwirren Sie java.util mit java.sql . Bei Verwendung von PreparedStatement#setDate() und ResultSet#getDate() , benötigen Sie java.sql.Date . Analog bei Verwendung von PreparedStatement#setTimestamp() und ResultSet#getTimestamp() Sie benötigen java.sql.Timestamp .

Zweitens ist es wichtig, dieses java.sql.Date zu verstehen stellt nur das Datum dar (Jahr, Monat, Tag) und nicht weniger oder mehr. Dies ist auf ein SQL DATE abzubilden Feldtyp. Der java.sql.Timestamp repräsentiert den Zeitstempel (Jahr, Monat, Tag, Stunde, Minute, Sekunde, Millisekunde), genau wie der java.util.Date und java.util.Calendar tut. Diese soll auf einen SQL TIMESTAMP abgebildet werden oder DATETIME Feldtyp.

Die Zeitzonen benötigen Sie, wenn die Datenbank keine Zeitzoneninformationen speichert (daher werden alle Zeitstempel in UTC (GMT) gespeichert). Sie können dann einen Calendar übergeben in dem Informationen über die aktuelle Zeitzone enthalten sind, damit der JDBC-Treiber den UTC-Zeitstempel an den Zeitstempel anpassen kann, der der Zeitzone entspricht. Wenn es beispielsweise GMT+1 ist, fügt der JDBC-Treiber dem Zeitstempel eine Stunde hinzu, bevor er zurückkehrt.