gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:53:31 24 4
gpt4 key购买 nike

我得到了一个里面有一堆日期的文件。它们是十六进制格式,我听说它是​​ YMD。

例子是:4A273F

..知道我将如何转换它吗?理想化使用 SQL/PLSQL,但我对其他想法持开放态度。

谢谢!

最佳答案

Oracle 和 java 相互配合得很好,如果您喜欢冒险,这可能是一个新想法。 Java 很容易做到这一点,但我远离 oracle 框并且无法测试。这真的很痛苦,我现在不在 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;
}
}

将该文件作为 Hex2Date.java 保存在“yourJava”目录中,并从该目录类型的 cmd 行中保存:

javac Hex2Date.java

现在输入:

java Hex2Date.java 0x4A273F

如果您得到正确的日期和结果,让我们告诉 oracle 我们的小功能。
您首先需要一些用户权限:
在此处向您的用户授予 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'))

关于sql - 如何将十六进制 'YMD' 日期转换为可读日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4129595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com