在搞数据库时,发现有这样的一个字段,类型是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;
本文介绍了一个将Oracle数据库中存储的自1970年1月1日以来的毫秒数转换为日期格式的方法。通过创建一个名为num_to_date的函数,可以实现毫秒数到日期的准确转换,并考虑了时区的影响。
1万+

被折叠的 条评论
为什么被折叠?



