sql >> Database >  >> RDS >> Oracle

Hoe het Intervaltype te formatteren naar het HH:MM-formaat?

Ik geloof dat het manipuleren van de stringwaarde de gemakkelijkste en eenvoudigste oplossing is, dus ik zal een alternatieve oplossing presenteren.

Uit de Oracle-documentatie voor de INTERVAL DAG TOT TWEEDE gegevenstype en uit de definitie van kolom START_TIME in uw vraag mogen de kolomwaarden niet meer dan één dag beslaan en mogen ze ook geen fracties van seconden bevatten.

Van de Oracle JDBC-documentatie , het datatype INTERVAL DAY TO SECOND verwijst naar de java-klasse oracle.sql.INTERVALDS . (Dit is een van de klassen in het Oracle JDBC-stuurprogramma JAR-bestand.)

Van de javadoc van klasse oracle.sql.INTERVALDS :

U weet dat alleen bytes 4, 5 en 6 relevant zijn vanwege de definitie van kolom START_TIME , d.w.z. nul dagen en nul fractionele seconden. Maar aangezien u in uw vraag schreef dat u de seconden negeert, betekent dit dat alleen bytes 4 en 5 relevant zijn. Vandaar de code voor het ophalen van de waarde uit de ResultSet en het converteren naar een string in uw gewenste formaat is:

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. ER-diagrammen in IRI Workbench

  2. Detecteer mysql-update/insertiefout als gevolg van geschonden unieke beperking

  3. Maak geneste json van sql-query postgres 9.4

  4. Hoe een NULL-waarde van PHP-variabele in MySQL invoegen, wegblijven van SQL-injectie?