Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用SQL Server转换为确定性函数_Sql Server_Function_Deterministic_Non Deterministic - Fatal编程技术网

Sql server 使用SQL Server转换为确定性函数

Sql server 使用SQL Server转换为确定性函数,sql-server,function,deterministic,non-deterministic,Sql Server,Function,Deterministic,Non Deterministic,我正在尝试使用SQL Server创建一个确定性函数,以便为视图创建一个索引,该索引调用此函数。此函数采用列名并将月底作为datetime返回。例如,201701到20170131 你能帮我把它转换成确定性函数吗 CREATE FUNCTION dbo.ufnGetFiscalPeriodEndDate (@FiscalPeriod VARCHAR(10)) RETURNS DATE WITH SCHEMABINDING AS BEGIN RETURN EOMONTH(CAST(LE

我正在尝试使用SQL Server创建一个确定性函数,以便为视图创建一个索引,该索引调用此函数。此函数采用列名并将月底作为datetime返回。例如,
201701
20170131

你能帮我把它转换成确定性函数吗

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
此OBJECTPROPERTY查询返回0

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

如果你有
EOMONTH
,你就有
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

好极了!谢谢您!