Oracle 数据表中的日期可以用“NUMBER”类型字段存储,字段值数据如下,意为1970年1月1号0点0分距现在的毫秒值。
1543400044000
1543400044000
1543400044000
1543400044000
......
解决办法是写一个转换函数:
--加上TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24的用意为加上当地时区的时间差。
--咱们东八区TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))的值为8,除以24得到天。
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;
然后使用函数就可以了。
SELECT NUM_TO_DATE(T.COLTIME) FROM 表名 T;
本文介绍在Oracle数据库中如何将存储为NUMBER类型的毫秒级时间戳转换为标准日期格式的方法。通过创建一个名为NUM_TO_DATE的函数,可以实现从1970年1月1日以来的毫秒数到具体日期的转换,并考虑到时区差异。
2320

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



