您的位置:首页 > 数据库 > Oracle

oracle中将number类型毫秒值转为时间类型

2013-06-13 10:19 211 查看
 在搞数据库时,发现有这样的一个字段,类型是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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: