仅使用 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
我在仅读取 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