Unix時間戳記是從'1970-01-01 00:00:00'GMT開始的秒數,表現爲整數型。sql
Oracle中的時間是Date型,如下函數提供了兩種時間轉換的Oracle函數session
(1)從Unix時間戳記轉換爲Oracle時間oracle
create or replace function unix_to_oracle(in_number NUMBER) return date is
begin
return(TO_DATE('19700101','yyyymmdd') + in_number/86400 +TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24);
end unix_to_oracle;函數
(2)由Oracle時間Date型轉換爲Unix時間戳記
create or replace function oracle_to_unix(in_date IN DATE) return number is
begin
return( (in_date -TO_DATE('19700101','yyyymmdd'))*86400 - TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))*3600);
end oracle_to_unix;spa
-- 時間轉 10位時間戳 select (sysdate - TO_DATE('19700101', 'yyyymmdd')) * 86400 - TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone), 1, 3)) * 3600 from dual; -- 10位時間戳 轉 時間 select TO_DATE('19700101', 'yyyymmdd') + 1516862035 / 86400 + TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone), 1, 3)) / 24 from dual;