Oracle
 sql >> Database >  >> RDS >> Oracle

Come formattare il tipo di intervallo nel formato HH:MM?

Credo che manipolare il valore della stringa sia la soluzione più semplice e semplice, quindi presenterò una soluzione alternativa.

Dalla documentazione Oracle per INTERVALLO GIORNO AL SECONDO tipo di dati e dalla definizione della colonna START_TIME nella tua domanda, i valori della colonna non possono durare più di un giorno né possono contenere secondi frazionari.

Da Oracle Documentazione JDBC , il tipo di dati INTERVAL DAY TO SECOND esegue il mapping alla classe java oracle.sql.INTERVALDS . (Questa è una delle classi nel file JAR del driver Oracle JDBC.)

Da javadoc di classe oracle.sql.INTERVALDS :

Sai che solo i byte 4, 5 e 6 sono rilevanti a causa della definizione della colonna START_TIME , ovvero zero giorni e zero secondi frazionari. Ma dal momento che hai scritto nella tua domanda che stai ignorando i secondi, ciò significa che solo i byte 4 e 5 sono rilevanti. Da qui il codice per recuperare il valore da ResultSet e convertirlo in una stringa nel formato desiderato è:

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