2013-06-19 1 views
1

varchar로 잘못 설정된 tbMyTable에 startDate 열이 있습니다. 이 열의 대부분의 데이터는 훌륭하지만 여러 datetime 형식이 사용됩니다. 테이블의 몇 행은 열에 정크가 있습니다.여러 형식이 사용 된 경우 varchar 열을 datetime으로 변환

varchar (50)에서 nullable DateTime으로 열을 변환하는 SQL 스크립트를 작성하도록 도와주세요. 변환 할 수있는 데이터를 저장하고 잘못된 데이터를 null로 설정하십시오. 이 T-SQL 스크립트 (다른 ​​문자열과의 작품 형식을 날짜)

+1

어떤 버전의 SQL Server가 있습니까? 어떤 형식입니까? 'dd/mm/yyyy'와'mm/dd/yyyy'가 섞여 있다면 이것은 실제로 불가능합니다. –

+0

데이터의 양은 어느 정도입니까? 테이블을 내보내고 적절한 스크립팅 언어로 마사지 한 다음 다시 가져 오는 것이 좋습니다. – marceljg

답변

2

확인하십시오 CONVERT 기능 점검이 LINK의 자세한 내용은

SELECT CASE WHEN ISDATE(a.field) = 1 THEN CONVERT (DATETIME, a.field, 101) ELSE NULL END field 
FROM (
    SELECT '2012-06-06' as field 
    UNION 
    SELECT null as field 
    UNION 
    SELECT '2012-06-06asdad' as field 
    UNION 
    SELECT '2012/06/06' as field 
) a 

. ISDATE 함수는 유효한 날짜가 1 일 때 1을 반환합니다.