Credo che manipolare il valore della stringa sia la soluzione più semplice e semplice, quindi presenterò una soluzione alternativa.
Dalla documentazione Oracle per INTERVALLO GIORNO AL SECONDO tipo di dati
e dalla definizione della colonna START_TIME
nella tua domanda, i valori della colonna non possono durare più di un giorno né possono contenere secondi frazionari.
Da Oracle Documentazione JDBC
, il tipo di dati INTERVAL DAY TO SECOND
esegue il mapping alla classe java oracle.sql.INTERVALDS
. (Questa è una delle classi nel file JAR del driver Oracle JDBC.)
Da javadoc
di classe oracle.sql.INTERVALDS
:
Sai che solo i byte 4, 5 e 6 sono rilevanti a causa della definizione della colonna START_TIME
, ovvero zero giorni e zero secondi frazionari. Ma dal momento che hai scritto nella tua domanda che stai ignorando i secondi, ciò significa che solo i byte 4 e 5 sono rilevanti. Da qui il codice per recuperare il valore da ResultSet
e convertirlo in una stringa nel formato desiderato è:
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);