Acredito que manipular o valor da string seja a solução mais fácil e simples, por isso apresentarei uma solução alternativa.
Da documentação da Oracle para o INTERVAL DAY TO SECOND tipo de dados e da definição da coluna
START_TIME
na sua pergunta, os valores da coluna não podem abranger mais de um dia nem podem conter segundos fracionários. Do Oracle Documentação JDBC , o tipo de dados
INTERVAL DAY TO SECOND
mapeia para a classe java oracle.sql.INTERVALDS
. (Esta é uma das classes no arquivo JAR do driver Oracle JDBC.) Do javadoc da classe
oracle.sql.INTERVALDS
:Você sabe que apenas os bytes 4, 5 e 6 são relevantes devido à definição da coluna
START_TIME
, ou seja, zero dias e zero segundos fracionários. Mas como você escreveu em sua pergunta que está ignorando os segundos, isso significa que apenas os bytes 4 e 5 são relevantes. Daí o código para recuperar o valor do ResultSet
e convertê-lo em uma string no formato desejado é: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);