Oracle
 sql >> Base de données >  >> RDS >> Oracle

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

Premièrement, vous confondez java.util avec java.sql . Lors de l'utilisation de PreparedStatement#setDate() et ResultSet#getDate() , vous avez besoin de java.sql.Date . Analogue, lors de l'utilisation de PreparedStatement#setTimestamp() et ResultSet#getTimestamp() vous avez besoin de java.sql.Timestamp .

Deuxièmement, il est important de comprendre que java.sql.Date représente uniquement la date (année, mois, jour) et ni plus ni moins. Ceci doit être mappé à un SQL DATE type de champ. Le java.sql.Timestamp représente l'horodatage (année, mois, jour, heure, minute, seconde, milliseconde), exactement comme java.util.Date et java.util.Calendar Est-ce que. Ceci doit être mappé à un SQL TIMESTAMP ou DATETIME type de champ.

Quant aux fuseaux horaires, vous en avez besoin lorsque la base de données ne stocke pas les informations de fuseau horaire (ainsi, tous les horodatages sont stockés en UTC (GMT)). Vous pouvez ensuite passer un Calendar dans lequel contient des informations sur le fuseau horaire actuel, afin que le pilote JDBC puisse ajuster l'horodatage UTC à l'horodatage conforme au fuseau horaire. S'il s'agit par exemple de GMT+1, le pilote JDBC ajoutera une heure à l'horodatage avant de revenir.