0

我有一些代码可以从 oracle 数据库(不是我的)进行复制,但日期格式有问题。

我正在做一个set nls_date_format='yyyy-mm-dd hh24:mi:ss'并且大多数字段都返回得很好,例如:2013-04-03 03:48:46

但是,有两列被这个 ans 破坏,返回如下内容:0001-03-20 13:00:00

现在,如果您眯着眼睛,您会发现它只是强制格式化看起来像字符串的内容。我已经检查过了,这些列的类型是“日期”。

那么给了什么?我并不特别想要一次性解决方案,因为这是一个通用的复制器。

4

1 回答 1

0

当我从基于 Java 应用程序的数据库中迁移数据时,我遇到了这个问题。Oracle 中的日期格式没有问题。我处理它的方式:

CREATE TABLE table_dt(d_date DATE);

INSERT INTO table_dt VALUES (TO_DATE('0001-03-20 13:00:00', 'YYYY-MM-DD HH24:Mi:SS'));
COMMIT;

SELECT * FROM table_dt;
-- 0001-03-20 13:00:00

SELECT  CASE
            WHEN SUBSTR(TO_CHAR(d_date, 'YYYY-MM-DD HH24:Mi:SS'), 1, 1) = '0'
            THEN TO_DATE('2' || SUBSTR(TO_CHAR(d_date, 'YYYY-MM-DD HH24:Mi:SS'), 2), 'YYYY-MM-DD HH24:Mi:SS')
            ELSE d_date
        END AS parsed_d_date
FROM    table_dt;
-- 2001-03-20 13:00:00

只是为了让手清楚地展示给企业主,同意并迁移。

于 2013-06-07T14:14:49.617 回答