oracle number型日期转date型日期


在搞数据库时,发现有这样的一个字段,类型是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;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM