2014-11-07 3 views
0

오케이 SQL 전문가 ..... 도움이 필요합니다. 날짜 및 다른 숫자의 연결된 값인 특성 ReportBatchID가 있습니다. 예를 들어, 모든 ReportBatchID 값의 형식은 "201105115485452652"입니다. 날짜를 가져오고 90 일이 넘은 모든 날짜를 선택하려면 해당 값의 처음 8 자리를 선택 해제해야합니다. 나는 날짜로 끌어SQL의 연결된 속성에서 날짜 쿼리

select Left (ReportBatchID, 8) from [Table] 

를 사용할 수 있어요,하지만 난 다음

where ReportBatchID < CONVERT (VARCHAR(10), DATEADD(DAY, -90, GETDATE()),121) 

를 사용할 때 선택 나는 오류 얻을 내 "숫자 데이터 유형 VARCHAR 변환 오류." 아무도 이것을하는 방법을 안다?

+0

당신이 사용하는 경우 글쎄,'왼쪽 (ReportBatchID, 8)'에게 적절한 캐스팅을 사용 Dateswhere에를 사용하는 경우 왜 당신은 필터에서 같은 식을 사용하지 않습니까? 또한 8 문자 또는 10 문자입니까? – Lamak

+0

감사합니다, Lamak. 대시가 없기 때문에 8 자입니다. SQL을 처음 접했을 때 필터에 LEFT를 사용할 수 있다는 것을 알지 못했지만 이제는 여러분에게 감사드립니다. –

답변

0

당신은 항상 양쪽

where CAST(LEFT(ReportBatchID ,8) as DATE) < 
CAST(DATEADD(DAY, -90, GETDATE()) as DATE) 



select CAST(DATEADD(DAY, -90, GETDATE()) as DATE) 


select CAST(LEFT(201105115485452652,8) as DATE) 

OUTPUT

2014-08-10 

2011-05-11 
+0

Brilliant! 감사합니다, Ganesh! –

+0

왜 Dow가 투표합니까 ?? –

+0

@JackPrible 이것이 도움이된다고 생각한다면 –