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

Mengurangi stempel waktu di Oracle mengembalikan data aneh

Saya kira kolom Anda didefinisikan sebagai timestamp daripada date .

Hasil pengurangan stempel waktu adalah interval sedangkan hasil pengurangan date kolom adalah angka yang mewakili jumlah hari antara dua tanggal.

Ini didokumentasikan dalam manual:
http://docs.Oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042

Jadi, saat Anda mentransmisikan kolom stempel waktu hingga saat ini, Anda akan mendapatkan apa yang Anda harapkan:

with dates as (
   select timestamp '2012-04-27 09:00:00' as col1,
          timestamp '2012-04-26 17:35:00' as col2
   from dual
)
select col1 - col2 as ts_difference,
       cast(col1 as date) - cast(col2 as date) as dt_difference
from dates;

Sunting :

Jika Anda ingin mengonversi interval, mis. jumlah detik (sebagai angka), Anda dapat melakukan sesuatu seperti ini:

with dates as (
   select timestamp '2012-04-27 09:00:00.1234' as col1,
          timestamp '2012-04-26 17:35:00.5432' as col2
   from dual
)
select col1 - col2 as ts_difference,
       extract(hour from (col1 - col2)) * 3600 +  
       extract(minute from (col1 - col2)) * 60 + 
       (extract(second from (col1 - col2)) * 1000) / 1000 as seconds
from dates;

Hasil di atas adalah 55499.5802



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pembaruan oracle membandingkan Varchar

  2. PLSQL JDBC:Bagaimana cara mendapatkan ID baris terakhir?

  3. Oracle - tidak ada fungsi dengan nama X dalam lingkup ini

  4. Cara Mengubah Tabel di Oracle

  5. TEMPFILE Offline Fisik Siaga