非确定性函数

埃里森松泰

sql server告诉我此函数是不确定的。我很困惑,因为给定日期x总是返回相同的值。

DATEADD(d, 13 - DATEDIFF(d, '9/23/10', serviceDate) % 14, serviceDate)
霍拉修
  CONVERT(DATE,  DATEADD(d, 13 - DATEDIFF(d, CONVERT(DATE, '9/23/10',101), serviceDate) % 14, serviceDate),101)

当您在SQL Server的索引计算列中引用日期数据类型字符串文字时,建议您使用确定性日期格式样式将文字显式转换为所需的日期类型。有关确定性日期格式样式的列表,请参见CAST和CONVERT。除非将数据库兼容性级别设置为80或更早版本,否则涉及将字符串隐式转换为日期数据类型的表达式被认为是不确定的。这是因为结果取决于服务器会话的LANGUAGE和DATEFORMAT设置。例如,表达式CONVERT(日期时间,“ 30 listopad 1996”,113)的结果取决于语言设置,因为字符串“ 30 listopad 1996”在不同语言中表示不同的月份。同样,在表达式DATEADD(mm,3,'

确定性的,除非与datetime,smalldatetime或sql_variant一起使用。

兑换

确定性的,除非存在以下条件之一:

...

源或目标类型为datetime或smalldatetime,其他源或目标类型为字符串,并指定了不确定的样式。为了确定,style参数必须是一个常数。此外,小于或等于100的样式是不确定的,除了样式20和21。大于100的样式是确定性的,除了样式106、107、109和113。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章