Jeg mener, at manipulation af strengværdien er den nemmeste og enkleste løsning, så jeg vil præsentere en alternativ løsning.
Fra Oracle-dokumentationen til INTERVAL DAG TIL ANDEN datatype
og fra definitionen af kolonne START_TIME
i dit spørgsmål kan kolonneværdierne ikke strække sig over mere end én dag, og de kan heller ikke indeholde brøkdele af sekunder.
Fra Oracle JDBC-dokumentation
, datatypen INTERVAL DAY TO SECOND
maps til java-klassen oracle.sql.INTERVALDS
. (Dette er en af klasserne i Oracle JDBC driver JAR-filen.)
Fra javadoc
af klassen oracle.sql.INTERVALDS
:
Du ved, at kun byte 4, 5 og 6 er relevante på grund af definitionen af kolonne START_TIME
, dvs. nul dage og nul brøksekunder. Men da du skrev i dit spørgsmål, at du ignorerer sekunderne, betyder det, at kun byte 4 og 5 er relevante. Derfor koden til at hente værdien fra ResultSet
og at konvertere den til en streng i dit ønskede format er:
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);