Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie formatiere ich den Intervalltyp im HH:MM-Format?

Ich glaube, dass das Manipulieren des String-Werts die einfachste und einfachste Lösung ist, also werde ich eine alternative Lösung vorstellen.

Aus der Oracle-Dokumentation für INTERVAL DAY TO SECOND Datentyp und aus der Definition der Spalte START_TIME In Ihrer Frage dürfen die Spaltenwerte nicht mehr als einen Tag umfassen und auch keine Sekundenbruchteile enthalten.

Von Oracle JDBC-Dokumentation , der Datentyp INTERVAL DAY TO SECOND wird der Java-Klasse oracle.sql.INTERVALDS zugeordnet . (Dies ist eine der Klassen in der JAR-Datei des Oracle-JDBC-Treibers.)

Aus dem Javadoc der Klasse oracle.sql.INTERVALDS :

Sie wissen aufgrund der Definition der Spalte START_TIME, dass nur die Bytes 4, 5 und 6 relevant sind , also null Tage und null Sekundenbruchteile. Da Sie jedoch in Ihrer Frage geschrieben haben, dass Sie die Sekunden ignorieren, sind nur die Bytes 4 und 5 relevant. Daher der Code zum Abrufen des Werts aus ResultSet und das Konvertieren in einen String in Ihrem gewünschten Format ist:

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