我有一些代码可以从oracle数据库(不是我的数据库)进行复制,而且我遇到日期格式问题。
我正在做set nls_date_format='yyyy-mm-dd hh24:mi:ss'
并且大多数字段都返回正常,例如:2013-04-03 03:48:46
然而,有两个列被这个ans修改了一些东西:0001-03-20 13:00:00
现在,如果你眯着眼睛,你可以看到它只是强制格式化看起来像一个字符串。我已经检查过,这些列的类型是'date'。
那是什么给出的?我并不特别想要一次性解决方案,因为这是一个通用的复制器。
答案 0 :(得分: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
只需清楚地向业主展示,同意并迁移。