Oracle:处理不同的日期格式

时间:2012-05-30 15:22:46

标签: oracle date

假设我们有一个名为MyDate的VARCHAR2列 假设它包含以下值:

13/02/2001

13-GEN-2001

我必须将此字段转换为DATE值。但是TO_DATE在某些值或其他值上都失败了。

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

我该如何转换它?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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,

答案 2 :(得分: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 ...