Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment formater le type d'intervalle au format HH:MM ?

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);