Creo que manipular el valor de la cadena es la solución más fácil y sencilla, por lo que presentaré una solución alternativa.
De la documentación de Oracle para INTERVALO DÍA A SEGUNDO tipo de datos
y de la definición de la columna START_TIME
en su pregunta, los valores de la columna no pueden abarcar más de un día ni pueden contener fracciones de segundo.
Desde Oracle Documentación de JDBC
, el tipo de datos INTERVAL DAY TO SECOND
se asigna a la clase java oracle.sql.INTERVALDS
. (Esta es una de las clases en el archivo JAR del controlador Oracle JDBC).
Del javadoc
de la clase oracle.sql.INTERVALDS
:
Sabe que solo los bytes 4, 5 y 6 son relevantes debido a la definición de la columna START_TIME
, es decir, cero días y cero fracciones de segundo. Pero como escribió en su pregunta que está ignorando los segundos, eso significa que solo los bytes 4 y 5 son relevantes. De ahí el código para recuperar el valor del ResultSet
y convertirlo en una cadena en el formato deseado es:
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);