INT (월 값)을 해당 연도의 분기를 나타내는 VARCHAR로 변환하는 SQL 함수를 작성했습니다.SQL-SERVER 분기 함수
내 코드는 다음과 같습니다. 나는 단지 다시 밖으로 단일 문자 'Q'를 얻을 (내 테스트 케이스에서)이 기능을 유효 날짜 개체를 전달 몇 가지 이유를 들어
ALTER FUNCTION [sf_Quarters] (@DATE date)
Returns VARCHAR(4)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @QUARTER VARCHAR(4) = '';
DECLARE @DATEMONTH INT = DATEPART(MONTH, @DATE);
SELECT @QUARTER =
CASE
WHEN @DATEMONTH > 3 AND @DATEMONTH < 7 THEN 'Q1'
WHEN @DATEMONTH > 6 AND @DATEMONTH < 10 THEN 'Q2'
WHEN @DATEMONTH > 9 AND @DATEMONTH <= 12 THEN 'Q3'
WHEN @DATEMONTH > 0 AND @DATEMONTH < 4 THEN 'Q4'
ELSE NULL
END
RETURN @QUARTER
END
.
DECLARE @DATE DATE = '20090405'
DECLARE @Qat VARCHAR
EXEC @Qat = sf_Quarters @DATE
SELECT @Qat
실감 나는 무언가를 잘못하고 있다고 생각합니다. 나는 단지 왜 CHARS의 첫 번째를 반환하는지 이해할 수 없다.
또한 고정 된 날짜 문자열을 (Current_Timestamp) 함수로 대체했으며 동일한 결과를 얻었습니다. 그것은 훨씬 간단 할 것 같다
선택 @Qat = dbo.sf_Quarters를 호출하기 위해 제안 된 방법에 따라를 @ DATE) – BhatiaAshish
DECLARE @Qat VARCHAR - 하나의 문자 만 선언 했으므로 'Q'만 얻는 것입니다. –