YYYYMM의 정수 형식을 반환하는 UDF를 만들고 싶습니다. 그래서 월에 몇 가지 항목을 쉽게 분할 할 수 있습니다. 이 함수는 PERSISTED
계산 된 열의 값을 할당하려고합니다.SQL Server FORMAT를 결정적으로 만들 수 있습니까?
나는 현재 잘 작동 다음,이 :
CREATE FUNCTION dbo.GetYearMonth(@pDate DATETIME2)
RETURNS INT
WITH SCHEMABINDING
AS
BEGIN
DECLARE @fYear VARCHAR(4) = RIGHT('0000' + CAST(YEAR(@pDate) AS VARCHAR),4)
DECLARE @fMonth VARCHAR(2) = RIGHT('00' + CAST(MONTH(@pDate) AS VARCHAR),2)
RETURN CAST(@fYear + @fMonth AS INT)
END
을하지만 대신 FORMAT
를 사용하는 청소기 생각합니다. 나는 이것을 시도했다 :
CREATE FUNCTION dbo.GetYearMonth(@pDate DATETIME2)
RETURNS INT
WITH SCHEMABINDING
AS
BEGIN
DECLARE @fYear VARCHAR(4) = FORMAT(@pDate,'yyyy', 'en-us')
DECLARE @fMonth VARCHAR(2) = FORMAT(@pDate,'MM', 'en-us')
RETURN CAST(@fYear + @fMonth AS INT)
END
그러나이 기능은 비 결정적이다. 결정적인 방법이 있습니까? FORMAT
? 아니면 UDF를 결정적으로 만드는 더 좋은 방법이 있습니까?
계산 열에 함수를 사용할 예정입니까? – FLICKER
@FLICKER 예, 그렇습니다. 지속 된 것. – Matthew
제 대답을 참조하십시오. 나도 왜 당신이 사용했는지 모른다. SCEHMEBINDING – FLICKER