Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak sformatować typ Interval do formatu GG:MM?

Uważam, że manipulowanie wartością ciągu jest najłatwiejszym i najprostszym rozwiązaniem, dlatego przedstawię alternatywne rozwiązanie.

Z dokumentacji Oracle dla Przedział typu DZIEŃ-DRUGI i z definicji kolumny START_TIME w twoim pytaniu wartości kolumn nie mogą obejmować więcej niż jednego dnia ani nie mogą zawierać ułamków sekund.

Z Oracle Dokumentacja JDBC , typ danych INTERVAL DAY TO SECOND mapuje do klasy java oracle.sql.INTERVALDS . (Jest to jedna z klas w pliku JAR sterownika Oracle JDBC.)

Z javadoc klasy oracle.sql.INTERVALDS :

Wiesz, że tylko bajty 4, 5 i 6 są istotne ze względu na definicję kolumny START_TIME , czyli zero dni i zero ułamków sekund. Ale ponieważ napisałeś w swoim pytaniu, że ignorujesz sekundy, oznacza to, że tylko bajty 4 i 5 są istotne. Stąd kod do pobierania wartości z ResultSet a przekonwertowanie go na ciąg w żądanym formacie to:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Polecenie SQL nie zostało poprawnie zakończone Wyjątek

  2. Parametry połączenia Oracle ODP.NET:co znajduje się w źródle danych?

  3. Wybieranie n pierwszych elementów grupy w Oracle

  4. SSIS i wysłanie zapytania z datą do Oracle

  5. Jak korzystać z wyliczeń w Oracle?