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

Oracle SQL Hours Sự khác biệt giữa các ngày trong HH:MM:SS

Giả sử các cột đã là ngày tháng và do đó việc chuyển đổi đến và từ các chuỗi bạn đang thực hiện là vô nghĩa và sự khác biệt luôn diễn ra dưới một ngày, bạn có thể làm:

to_char(date '1970-01-01' + abs(stp.created_date - adhh.created_date), 'HH24:MI:SS')

Điều này nhận được sự khác biệt giữa các ngày dưới dạng một phần nhỏ của một ngày; đảm bảo rằng nó là tích cực qua abs(); và sau đó cộng phần đó trở lại vào một ngày danh nghĩa, có thời gian là nửa đêm. Sau đó, nó chuyển đổi nó thành một chuỗi, chỉ xem xét thời gian.

Bản demo nhanh:

-- CTEs to supply the two date/times
with stp (created_date) as (
  select cast(timestamp '2018-02-26 12:59:21' as date) from dual
),
adhh (created_date) as (
  select cast(timestamp '2018-02-26 12:59:32' as date) from dual
)
select to_char(date '1970-01-01' + abs(stp.created_date - adhh.created_date), 'HH24:MI:SS')
from stp cross join adhh;

TO_CHAR(
--------
00:00:11

Nếu sự khác biệt có thể vượt quá một ngày chứ không phải một năm, bạn có thể thay đổi mô hình định dạng thành một cái gì đó như 'FMDDD FMHH24:MI:SS' , sẽ hiển thị đầy đủ các ngày khi bắt đầu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. một cách hiệu quả để kiểm tra xem một hàng trong bảng có tồn tại hay không

  2. Oracle:Làm thế nào để biết được có một giao dịch đang chờ xử lý hay không?

  3. TẢI THÔNG TIN DỮ LIỆU tương đương trong Oracle

  4. Oracle - ORA-06502:PL / SQL:lỗi số hoặc giá trị (DBMS_OUTPUT)

  5. làm thế nào để chuyển một tên bảng làm tham số cho thủ tục được lưu trữ?