sql >> Databáze >  >> RDS >> Oracle

Jak formátovat typ intervalu na formát HH:MM?

Domnívám se, že manipulace s hodnotou řetězce je nejjednodušší a nejjednodušší řešení, proto uvedu alternativní řešení.

Z dokumentace Oracle pro INTERVAL DEN TO DRUHÝ typ dat a z definice sloupce START_TIME ve vaší otázce nesmí hodnoty sloupců trvat déle než jeden den ani nemohou obsahovat zlomky sekund.

Z databáze Oracle Dokumentace JDBC , datový typ INTERVAL DAY TO SECOND mapuje na třídu java oracle.sql.INTERVALDS . (Toto je jedna z tříd v souboru JAR ovladače Oracle JDBC.)

Z javadoc třídy oracle.sql.INTERVALDS :

Víte, že kvůli definici sloupce START_TIME jsou relevantní pouze bajty 4, 5 a 6 , tj. nula dní a nula zlomkových sekund. Ale protože jste ve své otázce napsali, že ignorujete sekundy, znamená to, že jsou relevantní pouze bajty 4 a 5. Odtud kód pro načtení hodnoty z ResultSet a jeho převod na řetězec v požadovaném formátu je:

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. Jak naskriptuji soubor php, aby se zobrazil obrázek jako <img src=/img.php?imageID=32 />?

  2. mysql_num_rows() očekává, že parametr 1 bude zdrojem, booleovský zadaný v C:\wamp\www

  3. Získejte první pondělí v měsíci v SQLite

  4. Jak vyvolat výjimku uvnitř spouštěče? Existuje způsob, jak to udělat?