sql – 如何将十六进制’YMD’日期转换为可读日期?
我收到了一个里面有一堆日期的文件.他们是十六进制格式,我被告知它是YMD.
例如:4A273F 我想怎么去转换呢?想象使用SQL / PLSQL,但我对其他想法持开放态度. 谢谢! 解决方法Oracle和 Java相互之间相当好,如果你感觉很冒险,这可能是一个新想法. Java很容易做到这一点,但我远离了一个oracle盒子,无法测试.这真的很痛,我现在不在甲骨文机前.为了确保我记得正确,我从这里开始使用步骤http://www.dba-oracle.com/tips_oracle_sqlj_loadjava.htm 然后我用谷歌搜索了这个,这几乎是一字不差地说明我们将在下面做什么: /**** *java and oracle playing together. */ import java.util.Date; public class hex2Date{ //this is if you want to call the java function from a command line outside of oracle public static void main (String args[]) { System.out.println ( convert (args[0]) ); } public static Date convert(String inHexString){ try{ Date dateResult = new Date(Long.parseLong(inHexString,16)); }catch (NumberFormatException e){ // do something with the exception if you want,recommend at least throwing it. //throw(e,'some extra message'); } return dateResult; } } 将该文件保存为’yourJava’目录中的Hex2Date.java,并从该目录中的cmd行输出: javac Hex2Date.java 现在输入: java Hex2Date.java 0x4A273F 如果你得到了正确的日期和结果,让我们告诉oracle我们的小功能. 现在将它包装在pl / sql中,这样你就可以在pl / sql中调用它: /* java function plsql wrapper: hex2Date.sf */ CREATE OR REPLACE FUNCTION hex2Date ( inHexString IN VARCHAR2) RETURN DATE AS LANGUAGE JAVA NAME 'Hex2Date.convert(java.lang.String) return Date'; / 现在,从sql提示符运行它:SQL> exec DBMS_OUTPUT.PUT_LINE(hex2Date(‘0x4A273F’)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |