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

Hvordan formateres intervaltype til TT:MM-format?

Jeg mener, at manipulation af strengværdien er den nemmeste og enkleste løsning, så jeg vil præsentere en alternativ løsning.

Fra Oracle-dokumentationen til INTERVAL DAG TIL ANDEN datatype og fra definitionen af ​​kolonne START_TIME i dit spørgsmål kan kolonneværdierne ikke strække sig over mere end én dag, og de kan heller ikke indeholde brøkdele af sekunder.

Fra Oracle JDBC-dokumentation , datatypen INTERVAL DAY TO SECOND maps til java-klassen oracle.sql.INTERVALDS . (Dette er en af ​​klasserne i Oracle JDBC driver JAR-filen.)

Fra javadoc af klassen oracle.sql.INTERVALDS :

Du ved, at kun byte 4, 5 og 6 er relevante på grund af definitionen af ​​kolonne START_TIME , dvs. nul dage og nul brøksekunder. Men da du skrev i dit spørgsmål, at du ignorerer sekunderne, betyder det, at kun byte 4 og 5 er relevante. Derfor koden til at hente værdien fra ResultSet og at konvertere den til en streng i dit ønskede format er:

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


  1. Udfør en SQL Stored Procedure og bearbejd resultaterne

  2. Analyse/profilering af forespørgsler på PostgreSQL

  3. Hvordan forbinder man to tabeller baseret på delstrengværdier af felter?

  4. Fejlmeddelelse Utermineret streng literal