Ik geloof dat het manipuleren van de stringwaarde de gemakkelijkste en eenvoudigste oplossing is, dus ik zal een alternatieve oplossing presenteren.
Uit de Oracle-documentatie voor de INTERVAL DAG TOT TWEEDE gegevenstype
en uit de definitie van kolom START_TIME
in uw vraag mogen de kolomwaarden niet meer dan één dag beslaan en mogen ze ook geen fracties van seconden bevatten.
Van de Oracle JDBC-documentatie
, het datatype INTERVAL DAY TO SECOND
verwijst naar de java-klasse oracle.sql.INTERVALDS
. (Dit is een van de klassen in het Oracle JDBC-stuurprogramma JAR-bestand.)
Van de javadoc
van klasse oracle.sql.INTERVALDS
:
U weet dat alleen bytes 4, 5 en 6 relevant zijn vanwege de definitie van kolom START_TIME
, d.w.z. nul dagen en nul fractionele seconden. Maar aangezien u in uw vraag schreef dat u de seconden negeert, betekent dit dat alleen bytes 4 en 5 relevant zijn. Vandaar de code voor het ophalen van de waarde uit de ResultSet
en het converteren naar een string in uw gewenste formaat is:
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);