Вярвам, че манипулирането на стойността на низа е най-лесното и просто решение, така че ще представя алтернативно решение.
От документацията на Oracle за Тип данни ИНТЕРВАЛ ДЕН ДО ВТОРА
и от дефиницията на колона START_TIME
във вашия въпрос стойностите на колоната не могат да обхващат повече от един ден, нито могат да съдържат дробни секунди.
От Oracle JDBC документация
, типът данни INTERVAL DAY TO SECOND
картографира към Java класа oracle.sql.INTERVALDS
. (Това е един от класовете в JAR файла на Oracle JDBC драйвера.)
От javadoc
от клас oracle.sql.INTERVALDS
:
Знаете, че само байтове 4, 5 и 6 са уместни поради дефиницията на колона START_TIME
, т.е. нула дни и нула дробни секунди. Но тъй като сте написали във въпроса си, че пренебрегвате секундите, това означава, че само байтове 4 и 5 са уместни. Оттук и кодът за извличане на стойността от ResultSet
и преобразуването му в низ в желания от вас формат е:
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);