2012-05-30 63 views
1

假設我們有一個VARCHAR2列名爲MyDate 假設它包含以下值:甲骨文:處理不同的日期格式

13/02/2001

13-GEN-2001

我要將此字段轉換爲DATE值。但TO_DATE在某些值或其他值上失敗。

TO_DATE(MyDate, 'DD/MM/YYYY') 

我該如何轉換它?

回答

3
SELECT CASE 
     WHEN REGEXP_LIKE(mydate, '\d{2}/\d{2}/\d{4}') THEN 
       TO_DATE(mydate, 'DD/MM/YYYY') 
     WHEN REGEXP_LIKE(mydate, '\d{2}-[a-z]{3}-\d{4}') THEN 
       TO_DATE(mydate, 'DD-MON-YYYY') 
     END 
FROM mytable 
0

至少你可以做一些像

CASE WHEN REGEXP_LIKE(YOUR_COLUMN,'\d{2}/\d{2}/\d{4}' THEN TO_DATE(MyDate, 'DD/MM/YYYY') 
    WHEN REGEXP_LIKE(YOUR_COLUMN,'\d{2}-\D{,3}-\d{4}' THEN TO_DATE(MyDate, 'DD-MON-YYYY')   
    WHEN ... 

1

,你可以這樣寫

CASE WHEN instr(labour_contract_expiry, '-') > 0 THEN 
     to_date(LABOUR_CONTRACT_EXPIRY,'DD-MON-RRRR') 
ELSE 
     to_date(LABOUR_CONTRACT_EXPIRY,'DD/MM/RRRR') 
END,