Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将AS400日期转换为Oracle格式_Sql_Oracle_Ibm Midrange - Fatal编程技术网

Sql 将AS400日期转换为Oracle格式

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

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

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是的,你说得对。我很难用通俗易懂的英语写出来。我希望我的回答的前几行措辞更为正确。如果这仍然需要一些工作,请随意编辑/评论!