1. 程式人生 > >Oracle與Unix時間戳的轉換

Oracle與Unix時間戳的轉換

思路就是明白unix/linux時間戳是按照從格林威治時間1970年1月1日期計算的一個秒數

unix/linux 時間戳轉換為標準時間格式(主要是注意時區問題):

select TO_DATE('19700101','yyyymmdd') + 1235728935/86400 +TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24 from dual,其中1235728935就是unix/linux時間戳,轉換完之後就表示為 2009-2-27 18:02:15。


反過來也一樣,還是要考慮時區


select (to_date('2009-2-27 18:02:15','yyyy-mm-dd hh24:mi:ss') - to_date('1970-1-1','yyyy-mm-dd'))*86400- TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))*3600 from dual