ITPub博客

首页 > 数据库 > Oracle > sql monitor中timestamp变量转换可识别格式

sql monitor中timestamp变量转换可识别格式

原创 Oracle 作者:startay 时间:2016-06-27 11:54:46 0 删除 编辑

工作中使用SQL MONITOR分析变量时,若有TIMESTAMP格式,会出现“78740616010101” 无法识别的数字,通过下面方法可转换能识别的时间格式。

Binds
========================================================================================================================
| Name | Position |     Type     |                                        Value                                        |
========================================================================================================================
| :1   |        1 | NUMBER       | 42599677                                                                            |
| :2   |        2 | TIMESTAMP    | 78740616010101                                                                      |
| :3   |        3 | TIMESTAMP    | 78740616010101                                                                      |
| :4   |        4 | VARCHAR2(32) | 360                                                                                 |
| :5   |        5 | NUMBER       | 10000                                                                               |
========================================================================================================================

可通过下面两种方法解析变量,转换可识别的时间

方法一:

  1.  select to_timestamp(
  2.    to_char( to_number( substr( p_str, 1, 2 ), 'xx' ) - 100, 'fm00' ) ||
  3.    to_char( to_number( substr( p_str, 3, 2 ), 'xx' ) - 100, 'fm00' ) ||
  4.    to_char( to_number( substr( p_str, 5, 2 ), 'xx' ), 'fm00' ) ||
  5.    to_char( to_number( substr( p_str, 7, 2 ), 'xx' ), 'fm00' ) ||
  6.    to_char( to_number( substr( p_str,9, 2 ), 'xx' )-1, 'fm00' ) ||
  7.    to_char( to_number( substr( p_str,11, 2 ), 'xx' )-1, 'fm00' ) ||
  8.    to_char( to_number( substr( p_str,13, 2 ), 'xx' )-1, 'fm00' ), 'yyyymmddhh24miss' )
  9.   from (select '&raw_timestamp' p_str from dual)
  10. Enter value for raw_timestamp: 787406160101
  11. old 9: from (select '&raw_timestamp' p_str from dual)
  12. new 9: from (select '787406160101' p_str from dual)

  13. TO_TIMESTAMP(TO_CHAR(TO_NUMBER(SUBSTR(P_STR,1,2),'XX')-100,'FM00')||TO_CHAR
  14. ---------------------------------------------------------------------------
  15. 22-JUN-16 12.00.00.000000000 AM

方法二:

  1. set serverout on
  2. declare
  3.     d1 date;
  4. begin
  5.     dbms_stats.convert_raw_value(hextoraw('78740616010101'),d1);
  6.     dbms_output.put_line('DATE: '||to_char(d1,'yyyy-mm-dd hh24:mi:ss'));
  7. end;
  8. DATE: 2016-06-22 00:00:00






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17086096/viewspace-2121037/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 自适应游标共享
请登录后发表评论 登录
全部评论

注册时间:2013-07-29

  • 博文量
    45
  • 访问量
    86825