Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

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


Primeiro, você está confundindo java.util com java.sql . Ao usar PreparedStatement#setDate() e ResultSet#getDate() , você precisa de java.sql.Date . Analogamente, ao usar PreparedStatement#setTimestamp() e ResultSet#getTimestamp() você precisa de java.sql.Timestamp .

Segundo, é importante entender que java.sql.Date representa apenas a data (ano, mês, dia) e nada mais ou menos. Isso deve ser mapeado para um SQL DATE tipo de campo. O java.sql.Timestamp representa o carimbo de data e hora (ano, mês, dia, hora, minuto, segundo, milissegundo), exatamente como o java.util.Date e java.util.Calendar faz. Isso deve ser mapeado para um SQL TIMESTAMP ou DATETIME tipo de campo.

Quanto aos fusos horários, você precisa dele quando o banco de dados não armazena informações de fuso horário (assim, todos os timestamps são armazenados em UTC (GMT)). Você pode então passar um Calendário em que contém informações sobre o fuso horário atual, para que o driver JDBC possa ajustar o timestamp UTC para o timestamp em conformidade com o fuso horário. Se for, por exemplo, GMT+1, o driver JDBC adicionará uma hora ao carimbo de data/hora antes de retornar.