答案 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')