2011-07-18 27 views
2

私はpostgresテーブルにダーティーな入力を解析しようとしています。私は時々 '00000000'や '20100100'のような非日付を含む '日付'フィールドに問題があります。 pgはこれらを受け入れることを拒否します。postgresqlで無効な日付を認識しています

無効な日付(または有効な場合は有効な日付のみ)をpostgresに認識させる方法はありますか?それで、わかりやすいデフォルトに置き換えることはできますか?

(私は受け入れて喜ん日付の一覧表を作成すると考えられ、サブ選択してそれを使うが、それはとても洗練思わました。)

乾杯、

ユルゲン

+2

日付フィールドに無効な日付を含めることはできません。おそらく、日付値を含む* varchar *列を意味しますか? –

+0

実際、私は日付として解釈しようとするvarchar列です。 –

答えて

5

http://www.tek-tips.com/viewthread.cfm?qid=1280050&page=9

上記より一般的なアプローチ:

このように使用
create function safe_cast(text,anyelement) 
returns anyelement 
language plpgsql as $$ 
begin 
    $0 := $1; 
    return $0; 
    exception when others then 
     return $2; 
end; $$; 

select safe_cast('Jan 10, 2009', '2011-01-01'::timestamp) 
select safe_cast('Jan 10, 2009', null::timestamp) 

が#postgresql IRCチャンネルで優しい男に入金。 :)

+0

それはまさに私が必要としているようです。ありがとう! –

関連する問題