SQL Server 2014上的Eomonth函数

时间:2017-12-15 08:56:15

标签: sql sql-server sql-server-2014

我在这个函数上遇到错误,即使它被定义了。什么可能导致这个问题?

enter image description here

2 个答案:

答案 0 :(得分:3)

EOMONTH()是在SQL Server 2012中引入的。

我怀疑您的数据库的Compatibilty level设置在下面(或者您实际上不在SQL Server 2014上)。

ALTER DATABASE database_name   
SET COMPATIBILITY_LEVEL = 120   -- 120 == SQL Server 2014

确定您的SQL Server版本运行:

SELECT @@VERSION

另一种计算EOMONTH的方法是:

DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, @Date) + 1, 0))

答案 1 :(得分:1)

EOMONTH()返回日期类型

REPLACE(string_expression,string_pattern,string_replacement)

REPLACE ( EOMONTH( cast(@variable as date) )  '-','.')

您正在尝试从日期到字符串的隐式转换,并且您似乎假设日期数据类型实际上包含破折号,这不是真的。只需使用格式到所需的输出。无需替换并使用一组DATEADD()函数替换EOMONTH()

select format(dateadd(day,-1,dateadd(month, datediff(month,0, getDate()), 0)),'yyyy.MM.dd')