Uważam, że manipulowanie wartością ciągu jest najłatwiejszym i najprostszym rozwiązaniem, dlatego przedstawię alternatywne rozwiązanie.
Z dokumentacji Oracle dla Przedział typu DZIEŃ-DRUGI
i z definicji kolumny START_TIME w twoim pytaniu wartości kolumn nie mogą obejmować więcej niż jednego dnia ani nie mogą zawierać ułamków sekund.
Z Oracle Dokumentacja JDBC
, typ danych INTERVAL DAY TO SECOND mapuje do klasy java oracle.sql.INTERVALDS . (Jest to jedna z klas w pliku JAR sterownika Oracle JDBC.)
Z javadoc
klasy oracle.sql.INTERVALDS :
Wiesz, że tylko bajty 4, 5 i 6 są istotne ze względu na definicję kolumny START_TIME , czyli zero dni i zero ułamków sekund. Ale ponieważ napisałeś w swoim pytaniu, że ignorujesz sekundy, oznacza to, że tylko bajty 4 i 5 są istotne. Stąd kod do pobierania wartości z ResultSet a przekonwertowanie go na ciąg w żądanym formacie to:
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);