나는 char (8) 또는 20090609로 정의 된 날짜 필드와 char (4) 또는 1230으로 정의 된 시간 필드가있는 SQL 테이블을 가지고있다. 나는이 데이터를 다른 테이블로 옮기고있다. 필드를 만들고 새 테이블의 smalldatetime 필드에 넣습니다.전송하지 않을 데이터를 어떻게 확인할 수 있습니까?
INSERT NewTable(eventdate)
SELECT
CAST((datecol + ' ' + substring(timecol, 1, 2) + ':' + substring(timecol, 3, 2)) as smalldatetime)
FROM OldTable
내가 이것을 실행하면, 나는 오류 얻을 : 내 쿼리는 다음과 같다
The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.
를 I했습니다 확인 렌 (datecol) 시도 렌 (timecol)는 그들이 있는지 확인 적어도 정확한 숫자. 문제가되는 데이터, 제안 사항을 어떻게 찾을 수 있는지 잘 모르겠습니다. 데이터베이스가 SQL2000이고 SMO 2008을 사용하고 있습니다.
좋은 접근 방식,이 + 1과 12 사이의 1 월과 28 사이의 하루를 확인하고 많은 오류를 필터링해야합니다. – tekBlues
나는 또한 접근 방식을 좋아하지만, 그것으로 "char 데이터 유형을 datetime 데이터 형식이 범위를 벗어난 datetime 값을 가져 왔습니다. " – scottm
당신은 무엇을, 당신의 하위 문자열이 당신의 timecol의 두 번째 부분에 대해 꺼져 있다고 생각합니다. substring (timecol, 3, 2)이어야합니다. – cmsjr