https://docs.oracle.com/cd/B28359_01/server.111/b28320/statviews_2089.htm#REFRN20275
Note the low_value and high_value are in RAW(32) format.
2. google and found a few article, but only this works correctly for me. As some of them giving higher number for low_value than high_value. i.e. the low_value is likely to be year 2169, while high value is year 2017. Guess this is computer using two digits to represent years in YY.
http://oracle-study-notes.blogspot.sg/2008/06/how-to-display-highvaluelowvalue.html
sharing his code here. Thanks Mr. Sun.
1. create a function as follows (copied from a website)
create or replace function display_raw (rawval raw, type varchar2) return varchar2 is cn number; cv varchar2(32); cd date; cnv nvarchar2(32); cr rowid; cc char(32); begin if (type = 'NUMBER') then dbms_stats.convert_raw_value(rawval, cn); return to_char(cn); elsif (type = 'VARCHAR2') then dbms_stats.convert_raw_value(rawval, cv); return to_char(cv); elsif (type = 'DATE') then dbms_stats.convert_raw_value(rawval, cd); return to_char(cd); elsif (type = 'NVARCHAR2') then dbms_stats.convert_raw_value(rawval, cnv); return to_char(cnv); elsif (type = 'ROWID') then dbms_stats.convert_raw_value(rawval, cr); return to_char(cnv); elsif (type = 'CHAR') then dbms_stats.convert_raw_value(rawval, cc); return to_char(cc); else return 'UNKNOWN DATATYPE'; end if; end; /
2. Issue the following statement with table name and column name
col column_name format a20 col low_val format a20 col high_val format a20 select a.column_name, display_raw(a.low_value,b.data_type) as low_val, display_raw(a.high_value,b.data_type) as high_val, a.num_distinct from dba_tab_col_statistics a, dba_tab_cols b where a.table_name='TABLE_NAME' and a.table_name=b.table_name and a.column_name=b.column_name and a.owner='MYOWNER' and b.owner='MYOWNER' -- and a.column_name ='COL_NAME' /
Today I had chance to try this article and found it works well too.
select low_VALUE , high_value from dba_tab_col_statistics where TABLE_NAME='ACCOUNTS' and COLUMN_NAME='DATETIME';
LOW_VALUE HIGH_VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
77C50718010101 78710C17103A39
set serveroutput on
DECLARE
rv RAW(32) ;
dt DATE;
BEGIN
select LOW_VALUE into rv from dba_tab_col_statistics where TABLE_NAME='ACCOUNTS' and COLUMN_NAME='DATETIME' and owner='TAN';
dbms_stats.convert_raw_value(rv, dt);
dbms_output.put_line( TO_CHAR(dt, 'dd-MON-yyyy hh:mm'));
END;
/
23-OCT-1970 12:10
PL/SQL procedure successfully completed.
following the code in https://mwidlake.wordpress.com/2010/01/03/decoding-high_value-and-low_value/
The low_value decoded are not correct for date columns.
COLUMN_NAME DATA_TYPE LOW_V HI_V
---------------------- ---------- ------------------ ------------------
ID NUMBER 6820 877120576
DATETIME DATE 2096-7-24 0:0:0 2013-12-23 15:57:56
TRANSACTIONDATE DATE 2096-7-24 0:0:0 2013-12-23 2:37:3
..
36 rows selected.
36 rows selected.