Sql 将AS400日期转换为Oracle格式
我在AS400中有一个奇怪的日期格式,我需要将其转换为Oracle日期格式(即dd-mm-yyyy)。下面是存储在AS400中的日期Sql 将AS400日期转换为Oracle格式,sql,oracle,ibm-midrange,Sql,Oracle,Ibm Midrange,我在AS400中有一个奇怪的日期格式,我需要将其转换为Oracle日期格式(即dd-mm-yyyy)。下面是存储在AS400中的日期 101 820101 820101 820101 820101 820101 820101 820101 10728 820101 820101 820101 820101 可能您的日期存储为某种数字数据类型?在将相应字符串转换为日期之前,只需将数据左键填充为0,即可解决问题 因此,如果您需要将数据转换为DATE类型,您将编写: CREATE TABLE T2
101
820101
820101
820101
820101
820101
820101
820101
10728
820101
820101
820101
820101
可能您的日期存储为某种数字数据类型?在将相应字符串转换为日期之前,只需将数据左键填充为
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;
请参见您是在Oracle中还是在DB2中尝试这样做?日期是什么意思?也就是说,请显示您希望为每个日期生成的值。您使用什么来预览数据?看起来前导零正在删除,因为它是数字。格式通常是yymmdd。作为系统管理员,请编辑问题并解释如何解释这些日期。谢谢。我正在尝试使用ODI将数据从AS400迁移到Oracle。AS400中此列的数据类型为number。对于Ex 01-Jan-2000 as 101(yymmdd)格式,2001年7月28日as 010728。您应该为您的日期提供一个样本:我有
820101
,我想要01-01-1982
嗨,Sylvain,我收到错误“ORA-01843:不是有效月份”@raju请提供一个更重要的数据样本,因为这在您的示例中起作用。零导联没有“丢失”,如果列被定义为数字(分区或压缩十进制),则它们不能为。大多数SQL接口在显示结果集时都会在数字字段中禁止前导零。@Sylvain我只从生产数据库中获取这些数据。@Charles是的,你说得对。我很难用通俗易懂的英语写出来。我希望我的回答的前几行措辞更为正确。如果这仍然需要一些工作,请随意编辑/评论!