有一些不尋常的事情發生。在遷移期間,我有一些日期超過2050年(例如,20.05.2050,21.11,2051),但由於某些原因,甲骨文將它們更改爲1950年,1951年等。如果您詢問我並且它是由客戶報告的,則非常煩人。這些都是退休的日期,以便他們顯然無法在20世紀50年代和60年代從2050年到1950年的神祕變化
在原表的日期是像YYYYMMDD格式又名20500130.因此,這裏是我的MERGE語句
MERGE INTO employment_data emp
USING temp_02 src
ON (TO_NUMBER(src.id) = emp.id)
WHEN MATCHED THEN UPDATE SET
emp.retirement_day = DECODE(TO_NUMBER(src.retirement), 0, NULL, TO_DATE(src.retirement, 'YYYY.MM.DD'));
其他日期都OK(例如, 20301204),但2050年以後的任何日期都會發生。任何想法我怎麼可能解決這個煩惱?
Thx提前:-)
可能的解釋在這裏http://stackoverflow.com/questions/16847010/different-dates-oracle-11g-with-toad – Noel
什麼是格式?你提到YYYYMMDD(20500130),然後使用YYYY.MM.DD,並且還提到了(04122030)的例子,我猜想它是MMDDYYYY。 – tbone
是的,有些東西沒有加起來。如果你在像'2050.05.20'這樣的值上調用'TO_NUMBER()',你會得到一個無效的數字異常,所以'DECODE'的第一個條件應該拋出非零的日期。 –