2017-04-15 6 views
0

現在、VARCHARとしてフォーマットされている「Document_Date」というタイトルの列があるデータセットがあります。この列の日付はほとんどがDDMMYYYY形式ですが、日付が1976行の場合は「0116-11-26」のような奇妙な形式です。日付データの異常

to_date関数がエラー 'ORA-01858:数値以外の文字が見つかりましたが、数値が予想された場所に見つかりました'が表示されているため、このデータのマッピングに問題があります。日付。私はまた、ケースステートメントを使用してto_date( '0016-10-19'、 'YYYYMMDD')などの異常を 'DDMMYYYY'としてマップしようとしましたが、これには同じエラーが発生します。

これらの異常な日付を 'DDMMYYYY'の形式に変換する方法はありますか(つまり、日付が '0116-11-26'の場合は26/11/0116に変換されます)、すべて正しく変換してくださいDD/MM/YYYY形式の日付?

答えて

1

まれな日付に異なるフォーマットのマスクを使用することができます。このような何か:あなたの現在の試行が'0016-10-19'日付が失敗して変換する理由については

SELECT 
    CASE WHEN REGEXP_LIKE(col, '\d{4}-\d{2}-\d{2}') 
     THEN TO_DATE(col, 'YYYY-MM-DD') 
     ELSE TO_DATE(col, 'DDMMYYYY') 
    END AS new_date 
FROM yourTable 

、間違った書式マスクを使用しても良いです。マスクYYYY-MM-DDのハイフンを使用して、TO_DATE()を呼び出す必要があります。

関連する問題