我的 Oracle 数据库中有一个 RAW 字段,表示用户在系统中注册的日期。
该值类似于
24E2321A0000000000
但是我需要将该值转换为它代表的日期(等 2008-12-25 15:04:31)。
我尝试使用
totimestamp
(参见这个sqlfiddle),但那不起作用。
也许这会有所帮助:
SELECT utl_raw.cast_to_binary_integer('24E2321A0000000000') raw_to_int
FROM dual
/
输出是 36。我不确定你是否需要几天或几个小时。下一个示例是向 SYSDATE 添加 36 小时:
-- SYSDATE + 36/24 --
SELECT SYSDATE+(utl_raw.cast_to_binary_integer('24E2321A0000000000')/24) my_date
FROM dual
/
MY_DATE
---------------------
12/13/2013 4:29:22 AM
请尝试一下
declare
d date;
begin
dbms_stats.convert_raw_value (hextoraw('7876070A010101'), d);
dbms_output.put_line (d);
end;
或更短,使用相应的函数:
select to_char (dbms_stats.CONVERT_RAW_TO_DATE (hextoraw ('7876070A010101')), 'YYYY-MM-DD HH24:MI:SS') as raw_converted from dual;
结果:
RAW_CONVERTED
-------------------
2018-07-10 00:00:00