仅使用来自dateix字段的PL / SQL读取日期,来自informix数据库

时间:2017-04-24 08:55:43

标签: oracle date datetime informix

我在阅读PL / SQL日期时遇到问题。我想要读取的字段是datetime,其名称是last_updated。我正在做oracle和informix数据库之间的比较,这就是我使用pl / sql的原因。 我有一个看起来必须工作的查询,它是这样的:

        select to_date("last_updated", 'dd/mm/YYYY')   from "smetka"@informix

此查询返回结果,并且不会出现任何错误,但日期格式如此30.06。 0 014且必须为30.06。 2 014

1 个答案:

答案 0 :(得分:2)

您可能会发现数据库期望使用格式dd/mm/yyyy输入日期,但无论应用程序存放使用格式dd/mm/yy并尝试使用dd/mm/yyyy数据库格式化它接受它是在公元1世纪(而不是预期的21世纪)。

例如:

SELECT TO_DATE( '30/06/14', 'dd/mm/yy' )   AS date1,
       TO_DATE( '30/06/14', 'dd/mm/yyyy' ) AS date2
FROM   DUAL;

输出:

DATE1               DATE2
------------------- -------------------
2014-06-30 00:00:00 0014-06-30 00:00:00

您可以尝试使用以下内容进行更正:

SELECT CASE
       WHEN TO_DATE( "last_updated", 'dd/mm/yyyy' )
              BETWEEN DATE '0000-01-01' AND DATE 0100-01-01'
       THEN TO_DATE( "last_updated", 'dd/mm/yyyy' ) + INTERVAL '2000' YEAR(4)
       ELSE TO_DATE( "last_updated", 'dd/mm/yyyy' )
       END
FROM   "smetka"@informix

SELECT CASE
       WHEN REGEXP_LIKE( "last_updated", '\d{1,2}/\d{1,2}/\d{1,2}' )
       THEN TO_DATE( "last_updated", 'dd/mm/yy' )
       ELSE TO_DATE( "last_updated", 'dd/mm/yyyy' )
       END
FROM   "smetka"@informix