2011-07-18 5 views
2

포스트그레스 테이블에 더티 입력을 구문 분석하려고합니다. '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

그건 정확히 내가 원하는 것 같다. 감사! –

관련 문제