web-dev-qa-db-fra.com

JDBC ResultSet getDate perd de la précision

Je perds en précision dans mes appels à ResultSet.getDate (x). Fondamentalement:

rs = ps.executeQuery();
rs.getDate("MODIFIED");

renvoie les dates tronquées au jour où MODIFIED est un champ Oracle TIMESTAMP de précision par défaut. Je pense qu'il me manque peut-être un peu de JDBC Tweak; généralement TIMESTAMP est compatible avec DATE, mais j'espère ne pas avoir à redéfinir la table entière.

27
orbfish

ResultSet.getDate() renvoie un Java.sql.Date, pas un Java.util.Date. Il s’agit d’une date intemporelle. Si vous voulez un horodatage, utilisez ResultSet.getTimestamp() !

63
Affe

Vous devez utiliser Java.sql.Timestamp au lieu de Java.sql.Date. Vous pouvez l’utiliser ultérieurement en tant qu’objet Java.util.Date.

rs = ps.executeQuery();
Timestamp timestamp = rs.getTimestamp("MODIFIED");

J'espère que cela t'aides.

4
dpatchery

Utiliser l'horodatage est la bonne façon. Veuillez noter qu’avec Timestamp, vous ne pourrez pas définir les colonnes sur nullable si vous utilisez Liquibase.

Un problème que j'ai rencontré aussi.

0
Ali