2016-07-29 2 views
0

테이블의 데이터를 다른 테이블에 삽입하려고합니다. 첫 번째 테이블은 varchar이고 두 번째 테이블은 날짜입니다.SQLServer - 삽입시 잘못된 행 건너 뛰기

나는 대략 convert에 대해 알고 있고 거의 모든 행 (varchar 테이블에서)은 올바른 형식을 가지고 있습니다. 그러나 일부는 잘못되었습니다.

나는 70000 개의 행을 가지고 있는데 모두 삽입하려고하면 "varchar 데이터 형식을 datetime 데이터 형식으로 변환하면 범위를 벗어나는 값이됩니다."라는 오류가 발생합니다. 31 일 또는 1 일을 0으로 삽입 한 30 일의 한 달 때문일 수도 있습니다.

내가 필요한 것은 잘못된 것을 건너 뛰고 나머지를 삽입하는 방법이며 잘못된 행이 무엇인지 알 수있는 방법 일 수 있습니다. 슈퍼 도움이 너무. 당신이 바위

들으들,

+0

잘못된 형식을 걸러 내기 위해'where' 절을 추가하십시오. –

+2

Try_PARSE(), TRY_CONVERT(), 선택한 것을 사용하여 임시 테이블에 데이터를 채우고 임시 테이블에서 새 테이블에 삽입하십시오. – dfundako

+0

사용중인 특정 버전의 SQL Server에 대한 태그를 추가하십시오. –

답변

1

들으들, 나는 @dfundako 대답을 사용; TRY_CONVERT와 나는 (이 null을 반환 원인) 잘못이 무엇인지 행을 볼 수 오른쪽 사람에게 코드를 삽입 할 수 있었다는 여기

select 
TRY_CONVERT(datetime, 
CONCAT (CONVERT(VARCHAR(10),db1.AnoCreaReg),'-', 
CONVERT(VARCHAR(10),db1.MesCreaReg),'-', 
CONVERT(VARCHAR(10),db1.DiaCreaReg))end) from Herpetologia.dbo.especimenes db1 
1

그냥 미래 연구에 대한 잘못된 레코드를 제외하는 것이 더 쉬울 수 있어야합니다

SELECT CAST(CharDateColumn as Date) 
FROM ABC 
WHERE IsDate(CharDateColumn) = 1; 
관련 문제