도움이 필요 싶어. 나는 다만 3 달 지나서 거래를 얻고 싶다.난 그냥 지난 3 개월 거래
SELECT *
FROM transaction
WHERE TransactionDate >= GETDATE()-90
transactionDate 내가 데이터 형식 날짜로 표현 변환
산술 오버플로 오류이 오류를 가지고,이 포맷 YYYYMMDD (예. 20,160,812)
와 INT 타입이다.
어떤 도움
도움이 필요 싶어. 나는 다만 3 달 지나서 거래를 얻고 싶다.난 그냥 지난 3 개월 거래
SELECT *
FROM transaction
WHERE TransactionDate >= GETDATE()-90
transactionDate 내가 데이터 형식 날짜로 표현 변환
산술 오버플로 오류이 오류를 가지고,이 포맷 YYYYMMDD (예. 20,160,812)
와 INT 타입이다.
어떤 도움
당신은 날짜에 직접 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에는 이유 때문에 날짜/시간 데이터 형식이 기본 제공됩니다. 그들에게 직접적인 지원이 많이 있습니다. 데이터베이스의 기능을 사용하십시오.
이것은 내가 말하고자하는 것입니다. 감사합니다 고든 –
@ 스콜리온 하트,이 답변은 당신에게 유용한 경우, 답변으로 표시합니다. – RGS
질문을 수정하고 샘플 데이터를 보여주십시오. 문제는 분명히 'TransactionDate'이지만, 귀하의 질문에 답변을 제공 할만큼 충분한 정보가 없습니다. –
질문 수정 –