2016-08-12 3 views
0

도움이 필요 싶어. 나는 다만 3 달 지나서 거래를 얻고 싶다.난 그냥 지난 3 개월 거래

SELECT * 
FROM transaction 
WHERE TransactionDate >= GETDATE()-90 

transactionDate 내가 데이터 형식 날짜로 표현 변환

산술 오버플로 오류이 오류를 가지고,이 포맷 YYYYMMDD (예. 20,160,812)

와 INT 타입이다.

어떤 도움

+0

질문을 수정하고 샘플 데이터를 보여주십시오. 문제는 분명히 'TransactionDate'이지만, 귀하의 질문에 답변을 제공 할만큼 충분한 정보가 없습니다. –

+0

질문 수정 –

답변

4

당신은 날짜에 직접 int를 변환 할 수 없습니다 할 것입니다. 그러나 YYYYMMDD 형식의 문자열을 변환 할 수 있습니다. 그래서,이 시도 :

WHERE cast(cast(TransactionDate as varchar(255)) as date) >= GETDATE() - 90 

다른 방법으로, 현재 날짜 측에서 모든 변환을 할 수있는 :

WHERE TransactionDate >= CONVERT(INT, CONVERT(VARCHAR(255), GETDATE() - 90, 112)) 

이 방법의 장점은 엔진이 TransactionDate에 인덱스를 사용할 수 있다는 것입니다.

즉, 열을 저장하는 올바른 방법은 DATE입니다. SQL Server에는 이유 때문에 날짜/시간 데이터 형식이 기본 제공됩니다. 그들에게 직접적인 지원이 많이 있습니다. 데이터베이스의 기능을 사용하십시오.

+0

이것은 내가 말하고자하는 것입니다. 감사합니다 고든 –

+1

@ 스콜리온 하트,이 답변은 당신에게 유용한 경우, 답변으로 표시합니다. – RGS

관련 문제