2011-03-18 4 views
2

숫자를 입력으로 받아서 날짜로 변환하는 함수가 있습니다. 이 숫자는 날짜 형식의 표준 형식이 아니므로 숫자 부분을 여러 날짜 부분으로 수동으로 세분하고 날짜 부분을 varchar 문자열로 캐스팅 한 다음 문자열을 연결하여 새 datetime 개체로 캐스팅해야합니다.SQL Server 2005의 사용자 정의 함수 내에서 "catching"오류가 발생했습니다.

제 질문은 어떻게 캐스팅 실패를 파악하고 함수에서 null 또는 낮은 범위의 값을 반환 할 수 있습니까? 필자의 함수가 "수동적"으로 실패하고, 저장 프로 시저에 실패 코드를 반환하는 대신 기본값을 반환하는 것을 선호합니다. TRY/CATCH 문은 분명히 함수 내에서 형식을 작동하지 않습니다 (내가 인식하지 못하는 정의 플래그가없는 경우). 표준 '@@ Error <> 0'메서드도 작동하지 않습니다.

답변

1
SELECT CASE WHEN ISDATE(@yourParameter) = 1 
    THEN CAST(@yourParameter AS DATETIME) 
    ELSE YourDefaultValue 
END 
+1

RLH가 숫자가 표준 형식의 표준 형식이 아니라고 말하지 않았습니까? 나는이 경우 ISDATE가 작동한다고 생각하지 않는다. – wcm

0

형식이 비표준이기 때문에 캐스팅하기 전에 모든 유효성 검사를 수행하는 것처럼 붙어있는 것처럼 들립니다. 개별 조각이 숫자인지 확인하고 월이 1에서 12 사이인지 확인하고 2 월 30 일이 아닌지 확인합니다. 아무것도 실패하면 아무 것도 반환하지 않습니다.