2012-11-08 4 views
0

여기에 날짜를 구성하는 3 개의 필드에 값이 있지만 null이 반환됩니다. 내 구문에 문제가 있습니다. 나는 또한 단지 날짜 (시간이) 원하는`전환에서 반환 된 날짜가 없음

내 선택 성명에서 그리고는 데이터 나 NULL주고
case when isdate(CAST(someTable.DATE_MM as varchar(8)) + CAST(someTable.DATE_DD as varchar(8)) + CAST (someTable.DATE_YY as varchar(8))) = 1 
     then convert(date,CAST(someTable.DATE_MM as varchar(8)) + '/' + CAST(someTable.DATE_DD as varchar(8)) + '/' + CAST (someTable.DATE_YY as varchar(8))) else null end as BirthDate, 

. 이들 3 개 필드의 값은 다음과 같습니다

DATE_MM: 3 
DATE_DD: 4 
DATE_YY: 1959 

그 3 개 필드 뒤의 데이터 형식 따라서 귀하의 ISDATE는 false를 반환하고 귀하의 경우 것입니다, 당신은 함께 3 개 VARCHAR 값을 병합

+0

당신은 작품을, http://stackoverflow.com/questions/266924/create-a-date-with-t-sql – Tejs

+0

@Tejs 좀보고 싶지만 당신이 얻을하는 방법을 알고 있습니다 캐스트에서 나온 날짜 (스트립 아웃 시간)? – user1808194

+0

'SmallDateTime'으로 변환 – Tejs

답변

0

는, 그것이 VARCHAR를 반환 int이며 else 절에서 null 값을 반환합니다.

+0

그럼 어떻게 그들을 함께 결합합니까? 나는 int + int + int를하고 싶지 않다. 그것은 변환을 작동시킬 수 있도록 날짜를 만들기 위해 파트를 추가하지 않고 추가하는 것이다. 그래서 varchar를 통해이 작업을 수행하므로 함께 추가 할 수 있습니다 ... – user1808194

0

대신 dateadd으로 처리 할 수 ​​있습니다.

select dateadd(day, DATE_DD - 1, 
       dateadd(month, DATE_MM - 1, 
         dateadd(year, DATE_YY - 1900, 0))) as BirthDate 
from someTable