No lado Java, a data geralmente é representada pelo (mal projetado, mas isso de lado)
java.util.Date
. É basicamente apoiado pelo Epoch time
no sabor de um long , também conhecido como carimbo de data/hora. Ele contém informações sobre as partes de data e hora. Em Java, a precisão é em milissegundos. No lado do SQL, existem vários tipos de data e hora padrão,
DATE , HORA e TIMESTAMP (em alguns bancos de dados também chamados de DATETIME ), que são representados no JDBC como java.sql.Data
, java.sql.Time
e java.sql.Timestamp
, todas as subclasses de java.util.Date . A precisão depende do banco de dados, geralmente em milissegundos como Java, mas também pode ser em segundos. Ao contrário de
java.util.Date , o java.sql.Date contém apenas informações sobre a parte da data (ano, mês, dia). O Hora contém apenas informações sobre a parte do tempo (horas, minutos, segundos) e o Timestamp contém informações sobre as duas partes, como java.util.Date faz. A prática normal de armazenar um carimbo de data/hora no banco de dados (portanto,
java.util.Date no lado Java e java.sql.Timestamp no lado JDBC) é usar PreparedStatement#setTimestamp()
. java.util.Date date = getItSomehow();
Timestamp timestamp = new Timestamp(date.getTime());
preparedStatement = connection.prepareStatement("SELECT * FROM tbl WHERE ts > ?");
preparedStatement.setTimestamp(1, timestamp);
A prática normal para obter um carimbo de data/hora do banco de dados é usar
ResultSet#getTimestamp()
. Timestamp timestamp = resultSet.getTimestamp("ts");
java.util.Date date = timestamp; // You can just upcast.