仅使用 PL/SQL 从日期时间字段读取日期,来自 informix 数据库

Reading date only with PL/SQL from datetime field , from informix database

我在仅读取 PL/SQL 的日期时遇到问题。我要读取的字段是日期时间,它的名称是 last_updated。我正在对 oracle 和 informix 数据库进行比较,这就是我使用 pl/sql 的原因。 我有一个看起来并且必须有效的查询,它是这样的:

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

这个查询正在返回结果,它没有给出任何错误,但是日期的格式是这样的 30.06.0014 并且必须是 30.06.2014

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