Oracle時間與Unix時間戳的轉換

Oracle時間與Unix時間戳的轉換

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;
相關文章
相關標籤/搜索