关于16进制timestamp转为正常日期格式
我在oracle上查看某条sql的执行计划时,发现其bind的值显示为类型:timestamp ,具体值为16进制的。现在想将其转换为正常的时间格式,yyyy-mm-dd hh24:mi:ss,请问该怎样处理呢?

我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
4条回答
默认
最新
SELECT to_timestamp( to_char( to_number( substr( '7879090F010101', 1, 2 ), 'xx' ) - 100, 'fm00' ) ||
to_char( to_number( substr( '7879090F010101', 3, 2 ), 'xx' ) - 100, 'fm00' ) ||
to_char( to_number( substr( '7879090F010101', 5, 2 ), 'xx' ), 'fm00' ) ||
to_char( to_number( substr( '7879090F010101', 7, 2 ), 'xx' ), 'fm00' ) ||
to_char( to_number( substr( '7879090F010101',10, 2 ), 'xx' )-1, 'fm00' ) ||
to_char( to_number( substr( '7879090F010101',12, 2 ), 'xx' )-1, 'fm00' ) ||
to_char( to_number( substr( '7879090F010101',14, 2 ), 'xx' )-1, 'fm00' ), 'yyyymmddhh24miss' ) FROM DUAL;
TO_TIMESTAMP(TO_CHAR(TO_NUMBER(SUBSTR('7879090F010101',1,2),'XX')-100,'FM00
---------------------------------------------------------------------------
15-SEP-21 03.15.00.000000000 PM
来自TOM大师的脚本。不过你是不是没截全?应该是16位。
https://asktom.oracle.com/pls/apex/f?p=100:11:0::::p11_question_id:595616200346060960
评论
有用 3
select to_timestamp(
to_char( to_number( substr( '7879090F010101', 1, 2 ), 'xx' ) - 100, 'fm00' ) ||
to_char( to_number( substr( '7879090F010101', 3, 2 ), 'xx' ) - 100, 'fm00' ) ||
to_char( to_number( substr( '7879090F010101', 5, 2 ), 'xx' ), 'fm00' ) ||
to_char( to_number( substr( '7879090F010101', 7, 2 ), 'xx' ), 'fm00' ) ||
to_char( to_number( substr( '7879090F010101',9, 2 ), 'xx' )-1, 'fm00' ) ||
to_char( to_number( substr( '7879090F010101',11, 2 ), 'xx' )-1, 'fm00' ) ||
to_char( to_number( substr( '7879090F010101',13, 2 ), 'xx' )-1, 'fm00' ), 'YYYY-MM-DD HH24: MI: SS.FF' )
from dual;
试试
评论
有用 1回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏


