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