sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo formatear el tipo de intervalo al formato HH:MM?

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);