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



我只阅读PL/SQL的日期存在问题。我想阅读的字段是日期时间,其名称已last_upded。我正在进行Oracle和Informix数据库之间的比较,这就是为什么我使用PL/SQL的原因。我有一个看起来和必须工作的查询,这样的查询:

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

此查询正在返回结果,并且没有给出任何错误,但是日期的格式就像此30.06。 0 014,必须为30.06。

您可能会发现数据库期望使用格式 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

最新更新