我只阅读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