sql >> Databasteknik >  >> RDS >> Oracle

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

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.




  1. Ta bort dubbletter med unikt index

  2. SQL Server - använder CASE i WHERE-satsen

  3. PostgreSQL-fönsterfunktioner Ignorera nollvärden

  4. Återkomsten av XFS på Linux