2016-08-31 6 views
-3

日付を格納する単一のvarcharカラムにいくつのタイプの日付フォーマットがあるか調べる必要があります。単一の日付フィールドで日付フォーマットを検索する

エントリが多すぎますので、手動で行うことはできません。

さまざまな形式の日付で列に表示されるさまざまな種類の日付形式を検索するSQLクエリを提案してください。

+2

日付にはフォーマットがありません – Jens

+1

実際の日付/時刻フィールドはバイナリ表現を格納しますが、「フォーマット」はありません。書式設定はフィールドデータを表示および検索する場合にのみ使用され、後者の場合、パラメータ化されたクエリは書式設定の問題を回避できます。フィールドデータに「フォーマット」がある場合は、バイナリではなく文字列として格納されているように見えます。あなたが大量の解析コードを書かない限り、あなたはSOLです。 –

+0

私は..日付の列 "日付"の日付を持つデータベースに... 2016-08-31&2016-08-31 00:00:00&以上の形式が格納されている場合は...フォーマットを調べる –

答えて

0

あなたはこのような関数を作成する必要があります。

CREATE OR REPLACE function f_invalid_date(date_field in varchar2,format_field in varchar2) return number as 
    v_d date; 
begin 
    v_d := TO_DATE(date_field, format_field); 
    return 0; 
exception 
    when others then 
    return 1; 
end; 

、あなたは次のように制御することができます:あなたのis_date_valid列は、それはあなたの送信フォーマットのためのあなたの有効なであれば

select 
f_invalid_date(your_varchar_column/*'20160606'*/,'yyyymmdd') is_date_valid 
from 
your_table; 

と。

したがって、すべての日付形式を試してカウントすることができます。

関連する問題