oracle 时间戳_Oracle时间戳类型内部表示的转换方式

监控或者排查SQL性能问题的时候,可能会抓到一条带绑定变量的语句,此时往往会根据对应绑定变量的值,做更深入的分析,例如数据分布、隐式转换等。

但如果是个时间戳类型的字段,绑定变量显示的值可能就是形如78780610033C01的一个字符串,我们怎样将他转成可识别的时间戳?

此时,dbms_stats中的convert_raw_value存储过程,就起到了作用,

Convert the internal representation of a minimum or maximum value into a datatype-specific value

https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS68494

像直方图中的最大最小值、绑定变量中的时间戳类型,利用这个存储过程都可以将这些Oracle内部存储的值转换成BINARY_FLOAT、BINARY_DOUBLE、DATE、NUMBER和VARCHAR2等类型,

f0f9fd8e2f00f498c9faba81471d98f6.png

如下所示,convert_raw_value将字符串转换成日期类型存储到v_x变量中,通过to_date格式化,dbms_output.put_line打印出来,

SQL> set serveroutput onSQL> declare  2    v_x date;  3    v_result varchar2(100);      4    begin  5      dbms_stats.convert_raw_value('78780610033C01',v_x);  6      select to_char(v_x,'yyyy-mm-dd hh24:mi:ss') into v_result from dual;  7      dbms_output.put_line(v_result);  8    end;  9  /2020-06-16 02:59:00PL/SQL procedure successfully completed.

近期的热文:

《Oracle的批量插入操作》

《数据库结构文档的生成利器》

《主键约束索引的奇葩现象》

《如何判断应用系统性能好不好?》

《Oracle Cloud创建19c数据库》

《SQL工具集-格式化结果的SQL》

《如何捕获问题SQL解决过度CPU消耗的问题》

《如何查看JVM运行的堆内存情况》

《Oracle删除字段的方式和风险,你都了解么?》

《登录缓慢的诡异问题》

《公众号600篇文章分类和索引》


版权声明:本文为weixin_31629913原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。