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等类型,

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

SQL> set serveroutput on
SQL> 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:00


PL/SQL procedure successfully completed.

近期的热文:

Oracle的批量插入操作

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

主键约束索引的奇葩现象

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

Oracle Cloud创建19c数据库

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

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

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

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

登录缓慢的诡异问题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值