Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle SQL Hours Perbedaan antara tanggal dalam HH:MM:SS

Dengan asumsi kolom sudah tanggal, dan oleh karena itu konversi ke dan dari string yang Anda lakukan tidak ada gunanya, dan perbedaannya akan selalu kurang dari satu hari, Anda dapat melakukan:

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

Ini mendapatkan perbedaan antara tanggal sebagai pecahan dari hari; pastikan itu positif melalui abs(); dan kemudian menambahkan pecahan itu kembali ke tanggal nominal, yang memiliki waktunya sebagai tengah malam. Kemudian ia mengubahnya menjadi string, hanya melihat waktu.

Demo cepat:

-- 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

Jika perbedaannya dapat melebihi satu hari, tetapi bukan satu tahun, Anda dapat mengubah model format menjadi sesuatu seperti 'FMDDD FMHH24:MI:SS' , yang akan menampilkan hari penuh di awal.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Keluaran skrip Pengembang SQL memotong lebar sys_refcursor

  2. Migrasi data antara DBMS yang berbeda

  3. UPDATE dengan CASE dan IN - Oracle

  4. Oracle RAC di Cloud Pihak Ketiga

  5. Bagaimana cara melihat tipe variabel dalam PL/SQL?