【问题标题】:Oracle: handle different date formatOracle:处理不同的日期格式
【发布时间】:2012-05-30 23:36:14
【问题描述】:

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

13/02/2001

2001 年第 13 代

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

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

如何转换?

【问题讨论】:

    标签: oracle date


    【解决方案1】:
    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
    

    【讨论】:

      【解决方案2】:

      你可以这样写

      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,
      

      【讨论】:

        【解决方案3】:

        至少你可以做类似的事情

        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 ...
        

        等等

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-27
          • 1970-01-01
          • 1970-01-01
          • 2013-09-01
          相关资源
          最近更新 更多