sql – 如何将十六进制’YMD’日期转换为可读日期?

我收到了一个里面有一堆日期的文件.他们是十六进制格式,我被告知它是YMD.

例如:4A273F

我想怎么去转换呢?想象使用sql / PLsql,但我对其他想法持开放态度.

谢谢!

解决方法

Oracle和 Java相互之间相当好,如果你感觉很冒险,这可能是一个新想法. Java很容易做到这一点,但我远离了一个oracle盒子,无法测试.这真的很痛,我现在不在甲骨文机前.为了确保我记得正确,我从这里开始使用步骤
http://www.dba-oracle.com/tips_oracle_sqlj_loadjava.htm

然后我用谷歌搜索了这个,这几乎是一字不差地说明我们将在下面做什么:
http://docstore.mik.ua/orelly/oracle/guide8i/ch09_03.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我们的小功能.
你首先需要一些用户权利:
GRANT JAVAUSERPRIV给您的用户;
输入这个:
loadjava -user scott / tiger -resolve Hex2Date.class

现在将它包装在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’))

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...