ORACLE 將number型的秒/毫秒值轉成date類型

轉自 http://blog.csdn.net/zhengzhb/article/details/7082911



在搞數據庫時,發現有這樣的一個字段,類型是NUMBER(38),查看了一下里面的數據,都是這樣的,

1323957678114
1321326994295
1322129306804
1322129716220

猜到應該是1970年1月1號0點0分距現在的毫秒值。

解決辦法是寫一個轉換函數:

create or replace function num_to_date(in_number NUMBER) return date is
begin
   return(TO_DATE('19700101','yyyymmdd')+ in_number/86400000+TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24 );
end num_to_date;

其中:加上TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24的用意爲加上當地時區的的時間差,咱們是東八區TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))的值爲8,除以24得到天。

然後使用函數就可以了

select num_to_date(t.actingtime) from 表名 t;


發佈了20 篇原創文章 · 獲贊 34 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章