方法一:
select SubString('JanFebMarAprMayJunJulAugSepOctNovDec',Month(GETDATE())*3-2,3)
方法二:
SET LANGUAGE 'us_english' select left(DATENAME(mm,'20161122'),3)
方法三:无需设置当前会话语言项
select SUBSTRING(DATENAME(MONTH,getdate()), 1, 3)
故可以根据方法三简单封装成函数
CREATE FUNCTION [dbo].[udf_MonthShortName] ( @input DATETIME ) RETURNS NVARCHAR(3) AS BEGIN DECLARE @rtn NVARCHAR(3) SET @rtn = SUBSTRING(DATENAME(MONTH,@input), 1, 3) RETURN @rtn END
【补充说明】
1、SET LANGUAGE
是在执行或运行时设置,而不是在分析时设置。它仅作用于当前会话环境,当前会话环境关闭后自动失效。
2、受 SET LANGUAGE
设置影响的日期处理函数是 DATENAME 和 CONVERT。