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

Ubah tipe data stempel waktu menjadi stempel waktu unix Oracle

Pertanyaan ini adalah kebalikan dari Convert Unixtime ke Datetime SQL (Oracle)

Seperti yang dikatakan Justin Cave:

Tidak ada fungsi bawaan. Tapi itu relatif mudah untuk menulis satu. Karena stempel waktu Unix adalah jumlah detik sejak 1 Januari 1970

Karena mengurangkan satu tanggal dari tanggal lain menghasilkan jumlah hari di antara tanggal tersebut, Anda dapat melakukan sesuatu seperti:

create or replace function date_to_unix_ts( PDate in date ) return number is

   l_unix_ts number;

begin

   l_unix_ts := ( PDate - date '1970-01-01' ) * 60 * 60 * 24;
   return l_unix_ts;

end;

Seperti dalam detik sejak tahun 1970 jumlah detik pecahan tidak penting. Anda masih dapat menyebutnya dengan tipe data stempel waktu...

SQL> select date_to_unix_ts(systimestamp) from dual;

DATE_TO_UNIX_TS(SYSTIMESTAMP)
-----------------------------
                   1345801660

Sebagai tanggapan atas komentar Anda, saya minta maaf, tetapi saya tidak melihat perilaku itu:

SQL> with the_dates as (
  2    select to_date('08-mar-12 01:00:00 am', 'dd-mon-yy hh:mi:ss am') as dt
  3      from dual
  4     union all
  5    select to_date('08-mar-12', 'dd-mon-yy')
  6      from dual )
  7  select date_to_unix_ts(dt)
  8    from the_dates
  9         ;

DATE_TO_UNIX_TS(DT)
-------------------
         1331168400
         1331164800

SQL>

Ada perbedaan 3.600 detik, yaitu 1 jam.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Fungsi yang Mengembalikan Detik dari Nilai Datetime di Oracle

  2. ORA-27154 / ORA-27146

  3. Menggunakan subquery dalam pernyataan Periksa di Oracle

  4. Bisakah Anda menggunakan Microsoft Entity Framework dengan Oracle?

  5. Cara mengatasi ORA-011033:inisialisasi ORACLE atau shutdown sedang berlangsung