将AS400日期转换为Oracle格式

时间:2014-11-20 12:44:01

标签: sql oracle ibm-midrange

我在AS400中有一个奇怪的日期格式,我需要转换为Oracle日期格式(即dd-mm-yyyy).Below是存储在AS400中的日期。

101
820101
820101
820101
820101
820101
820101
820101
10728
820101
820101
820101
820101

1 个答案:

答案 0 :(得分:3)

也许您的日期存储为某种数字数据类型?在将相应的字符串转换为日期之前,只需使用0左键填充数据即可解决您的问题。

因此,如果您需要将数据转换为DATE类型,则需要编写:

CREATE TABLE T2 AS 
    SELECT TO_DATE(LPAD("AS_DATE", 6, '0'), 'RRMMDD') ORACLE_DATE FROM T;
--                 ^^^^^^^^^^^^^^^^^^^^^^
--                    left pad missing '0'
--         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
--         convert to date with the correct format (I assume)

请注意RR格式,该格式将用于映射1950年至2049年范围内的2位数年份


即使我无法鼓励这种情况,如果由于某种原因你需要将日期存储为格式为dd-mm-yyyy字符串,你会写出类似的东西:

CREATE TABLE T3 AS
  SELECT TO_CHAR(TO_DATE(LPAD("AS_DATE", 6, '0'), 'RRMMDD'), 'DD-MM-YYYY') STRING_DATE FROM T;

请参阅http://sqlfiddle.com/#!4/47e5e/1