Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để định dạng loại Khoảng thời gian thành định dạng HH:MM?

Tôi tin rằng thao tác với giá trị chuỗi là giải pháp dễ dàng và đơn giản nhất, vì vậy tôi sẽ trình bày một giải pháp thay thế.

Từ tài liệu Oracle cho Kiểu dữ liệu INTERVAL DAY TO SECOND và từ định nghĩa của cột START_TIME trong câu hỏi của bạn, các giá trị cột không được kéo dài hơn một ngày cũng như không được chứa giây phân số.

Từ Oracle Tài liệu JDBC , kiểu dữ liệu INTERVAL DAY TO SECOND ánh xạ tới lớp java oracle.sql.INTERVALDS . (Đây là một trong các lớp trong tệp JAR trình điều khiển Oracle JDBC.)

Từ javadoc của lớp oracle.sql.INTERVALDS :

Bạn biết rằng chỉ các byte 4, 5 và 6 là có liên quan do định nghĩa của cột START_TIME , tức là không ngày và không giây phân số. Nhưng vì bạn đã viết trong câu hỏi của mình rằng bạn đang bỏ qua giây, điều đó có nghĩa là chỉ byte 4 và 5 là có liên quan. Do đó, mã để truy xuất giá trị từ ResultSet và chuyển đổi nó thành một chuỗi ở định dạng mong muốn của bạn là:

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. Làm cách nào để bạn chọn trường varchar2 ở định dạng 'HH24:MI:SSxFF6' làm GIỜ CAN THIỆP ĐẾN GIÂY (6)?

  2. Nối 3 bảng Oracle SQL

  3. Lỗi khi gọi java từ PL / SQL

  4. SQL Select biểu tượng gì || nghĩa là?

  5. Trở về từ Thế giới mở 2013