如何解决'DATEFROMPARTS'不是公认的内置函数名称-SQL Server 2008错误
Declare @i int=1;
select FORMAT(DATEFROMPARTS(1900,@i,1),'MMM','en-US')
在SQL Server 2008中执行时出现错误。
“ DATEFROMPARTS”不是公认的内置函数名称。
解决方法
DATEFROMPARTS
是SQL Server 2012中引入的。SQLServer 2008(不受支持的SQL Server版本)对该功能一无所知。如果需要SQL 2008中的功能,则需要创建实现。示例:
CREATE FUNCTION dbo.udf_DateFromParts (@year int,@month int,@day int)
RETURNS date
AS
BEGIN
RETURN DATEADD(day,@day-1,DATEADD(month,@month-1,DATEADD(year,@year-1,CAST('0001-01-01' AS date))));
END;
GO
类似地,FORMAT
也已在SQL Server 2012中引入。您需要对此具有SQLCLR函数含义。
如果要使用月份名称,请使用datename()
:
select left(datename(month,convert(date,convert(varchar(255),19000001 + @i * 100
)
)
),3)
从技术上讲,迄今为止的明确转换是不必要的:
select left(datename(month,19000001 + 1 * 100)),3)
,
SQL Server 2008中不存在您要调用的内置函数
我个人不会麻烦从月份数字构造日期,然后再调用函数来获取缩写的月份字符串。
您可以使用
SELECT SUBSTRING('JanFebMarAprMayJunJulAugSepOctNovDec',@i*3-2,3)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。