sql >> Database >  >> RDS >> Oracle

Past JDBC de datum aan voordat deze in Oracle DB wordt ingevoegd? Hoe voorkom ik dit?

Het probleem is dat Java Date objecten slaan geen tijdzone op. De waarde is altijd in UTC, en wordt geparseerd en geformatteerd in een bepaalde tijdzone, meestal de standaardtijdzone van de JVM.

Oracle DATE kolommen worden ook opgeslagen zonder tijdzone, maar moeten de datum vertegenwoordigen zoals deze door de gebruiker wordt gezien. In 99,99% van de gevallen betekent dat de datum in de standaardtijdzone van de JVM.

Het JDBC-stuurprogramma neemt dus de Timestamp / Date waarde, die zich in UTC bevindt, converteert deze naar de standaardtijdzone en slaat die op in de database.

U gebruikt de PreparedStatement.setTimestamp(int parameterIndex, Timestamp x) methode. Om de tijdzone te beheren, gebruikt u de PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal) methode. De javadoc citeren:




  1. Hoe gebruik je $db van een andere .php naar een andere .php-klasse met behulp van OOP?

  2. drop tablespace als deze niet bestaat

  3. Hoe DataFrame naar de postgres-tabel te schrijven?

  4. Hoe rijen met dezelfde waarde in sql te groeperen?