Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да форматирам тип интервал във формат HH:MM?

Вярвам, че манипулирането на стойността на низа е най-лесното и просто решение, така че ще представя алтернативно решение.

От документацията на Oracle за Тип данни ИНТЕРВАЛ ДЕН ДО ВТОРА и от дефиницията на колона START_TIME във вашия въпрос стойностите на колоната не могат да обхващат повече от един ден, нито могат да съдържат дробни секунди.

От Oracle JDBC документация , типът данни INTERVAL DAY TO SECOND картографира към Java класа oracle.sql.INTERVALDS . (Това е един от класовете в JAR файла на Oracle JDBC драйвера.)

От javadoc от клас oracle.sql.INTERVALDS :

Знаете, че само байтове 4, 5 и 6 са уместни поради дефиницията на колона START_TIME , т.е. нула дни и нула дробни секунди. Но тъй като сте написали във въпроса си, че пренебрегвате секундите, това означава, че само байтове 4 и 5 са ​​уместни. Оттук и кодът за извличане на стойността от ResultSet и преобразуването му в низ в желания от вас формат е:

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. Трябва да нулирате стойността на последователността в Oracle

  2. java.util.Timestamp.after() грешно при сравняване на милисекунди?

  3. Предотвратяване на Oracle minus израз от премахване на дубликати

  4. Как да получа фиктивна стойност за XML празен таг в таблица с помощта на Oracle?

  5. Как мога да получа COUNT(col) ... GROUP BY, за да използвам индекс?