Domnívám se, že manipulace s hodnotou řetězce je nejjednodušší a nejjednodušší řešení, proto uvedu alternativní řešení.
Z dokumentace Oracle pro INTERVAL DEN TO DRUHÝ typ dat
a z definice sloupce START_TIME
ve vaší otázce nesmí hodnoty sloupců trvat déle než jeden den ani nemohou obsahovat zlomky sekund.
Z databáze Oracle Dokumentace JDBC
, datový typ INTERVAL DAY TO SECOND
mapuje na třídu java oracle.sql.INTERVALDS
. (Toto je jedna z tříd v souboru JAR ovladače Oracle JDBC.)
Z javadoc
třídy oracle.sql.INTERVALDS
:
Víte, že kvůli definici sloupce START_TIME
jsou relevantní pouze bajty 4, 5 a 6 , tj. nula dní a nula zlomkových sekund. Ale protože jste ve své otázce napsali, že ignorujete sekundy, znamená to, že jsou relevantní pouze bajty 4 a 5. Odtud kód pro načtení hodnoty z ResultSet
a jeho převod na řetězec v požadovaném formátu je:
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);