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

Chuyển đổi loại dữ liệu dấu thời gian thành dấu thời gian unix Oracle

Câu hỏi này tương đối nghịch với Chuyển đổi Unixtime sang SQL Datetime (Oracle)

Như Justin Cave nói:

Không có chức năng cài sẵn. Nhưng nó tương đối dễ viết. Vì dấu thời gian Unix là số giây kể từ ngày 1.1970 tháng 1

Vì trừ một ngày cho một ngày khác dẫn đến số ngày giữa chúng, bạn có thể làm điều gì đó như:

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;

Như nó trong giây kể từ năm 1970 số giây phân số là phi vật chất. Bạn vẫn có thể gọi nó bằng kiểu dữ liệu dấu thời gian ...

SQL> select date_to_unix_ts(systimestamp) from dual;

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

Để trả lời nhận xét của bạn, tôi xin lỗi nhưng tôi không thấy hành vi đó:

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>

Chênh lệch 3.600 giây, tức là 1 giờ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gặp lỗi khi thực thi gói

  2. Cố gắng xuất một Oracle qua PL / SQL sẽ đưa ra ngày từ 0000-00-00

  3. Bật SSL hoặc TLS trong Oracle Apps R12

  4. Phân trang với Oracle

  5. Làm cách nào để xuất dữ liệu với Oracle SQL Developer?