Je pense que la manipulation de la valeur de chaîne est la solution la plus simple et la plus simple, je vais donc présenter une solution alternative.
À partir de la documentation Oracle pour Type de données INTERVALLE JOUR À SECONDE
et de la définition de la colonne START_TIME
dans votre question, les valeurs de colonne ne peuvent pas s'étendre sur plus d'un jour ni contenir de fractions de seconde.
À partir d'Oracle Documentation JDBC
, le type de données INTERVAL DAY TO SECOND
correspond à la classe Java oracle.sql.INTERVALDS
. (Il s'agit de l'une des classes du fichier JAR du pilote Oracle JDBC.)
Depuis le javadoc
de la classe oracle.sql.INTERVALDS
:
Vous savez que seuls les octets 4, 5 et 6 sont pertinents en raison de la définition de la colonne START_TIME
, c'est-à-dire zéro jour et zéro fraction de seconde. Mais puisque vous avez écrit dans votre question que vous ignorez les secondes, cela signifie que seuls les octets 4 et 5 sont pertinents. D'où le code pour récupérer la valeur du ResultSet
et la convertir en une chaîne dans le format souhaité est :
INTERVALDS intervalDS = (INTERVALDS) rs.getObject("START_TIME");
byte[] bytes = intervalDS.toBytes();
int hour = bytes[4] - 60;
int minute = bytes[5] - 60;
String result = String.format("%02d:%02d", hour, minute);