1

Assume という VARCHAR2 列MyDate があり、次の値が含まれているとします。

2001/02/13

2001年第13世代

このフィールドを DATE 値に変換する必要があります。ただし、TO_DATE は一部の値またはその他の値で失敗します。

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

どうすれば変換できますか?

4

3 に答える 3

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
于 2012-05-30T15:30:23.617 に答える
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,
于 2012-05-30T15:36:14.317 に答える
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 ...

于 2012-05-30T15:31:09.697 に答える