在搞数据库时,发现有这样的一个字段,类型是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;
本文介绍了一种将毫秒级时间戳转换为日期的方法,通过创建一个自定义函数实现从1970年1月1日0点0分到当前时间的毫秒数转换,并考虑了时区差异。
1万+

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



