2017-03-09 17 views
0

이 함수를 호출하는 뷰의 인덱스를 만들 수 있도록 SQL Server에서 결정적 함수를 만들려고합니다. 이 함수는 열 이름을 사용하여 datetime으로 월말을 반환합니다. 예 : 201701 ~ 20170131.SQL Server에서 결정적 함수로 변환

결정 성있는 함수로 변환하는 것을 도와 주시겠습니까? 당신이 EOMONTH 가지고있어이 OBJECTPROPERTY 쿼리가 0 반환

CREATE FUNCTION dbo.ufnGetFiscalPeriodEndDate (@FiscalPeriod VARCHAR(10)) 

RETURNS DATE 
WITH SCHEMABINDING 
AS BEGIN 
    RETURN EOMONTH(CAST(LEFT(@FiscalPeriod, 4) + RIGHT(@FiscalPeriod, 2) + '01' AS DATE)) 
END 

...

SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetFiscalPeriodEndDate'), 'IsDeterministic') 

답변

1

, 당신은 DATEFROMPARTS있어. 나는 언어 설정에 의존 할 수 있기 때문에 CAST이 비 결정적이라고 생각한다. 하지만 이것은 나를 위해 작동하는 것 같습니다 :

ALTER FUNCTION dbo.ufnGetFiscalPeriodEndDate (@FiscalPeriod VARCHAR(10)) 

RETURNS DATE 
WITH SCHEMABINDING 
AS BEGIN 
    RETURN EOMONTH(DATEFROMPARTS(LEFT(@FiscalPeriod, 4), RIGHT(@FiscalPeriod, 2) , 1)); 
END 
go 
+0

환상! 고맙습니다! –