我将月份存储在SQL Server中为1,2,3,4,…12。我想把它们显示为一月,二月等。在SQL Server中有一个函数像MonthName(1) = 1月?如果可能的话,我尽量避免使用CASE语句。


当前回答

这很简单。

select DATENAME(month, getdate())

产出:1月

其他回答

SQL server中没有系统定义的函数。但是您可以创建自己的用户定义函数—标量函数。您可以在数据库的对象资源管理器中找到标量函数:可编程性->函数->标量值函数。下面,我使用一个表变量将它们结合在一起。

--Create the user-defined function
CREATE FUNCTION getmonth (@num int)
RETURNS varchar(9) --since 'September' is the longest string, length 9
AS
BEGIN

DECLARE @intMonth Table (num int PRIMARY KEY IDENTITY(1,1), month varchar(9))

INSERT INTO @intMonth VALUES ('January'), ('February'), ('March'), ('April'), ('May')
                           , ('June'), ('July'), ('August') ,('September'), ('October')
                           , ('November'), ('December')

RETURN (SELECT I.month
        FROM @intMonth I
        WHERE I.num = @num)
END
GO

--Use the function for various months
SELECT dbo.getmonth(4) AS [Month]
SELECT dbo.getmonth(5) AS [Month]
SELECT dbo.getmonth(6) AS [Month]

SELECT MONTHNAME(concat('1970-',[Month int val],'-01'))

例如- SELECT MONTHNAME(concat('1970-',4,'-01'))

答案是——四月

只要用今天的日期减去当前的月份,然后再加上你的月份。然后使用datename函数在一行中给出完整的名称。

print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
to_char(to_date(V_MONTH_NUM,'MM'),'MONTH')

其中V_MONTH_NUM是月份号

SELECT to_char(to_date(V_MONTH_NUM,'MM'),'MONTH')  from dual;

您可以创建一个这样的函数来生成Month和do SELECT dbo.fn_GetMonthFromDate(date_column)作为月份FROM table_name /******对象:UserDefinedFunction [dbo]。[fn_GetMonthFromDate]脚本日期:11/16/2018 10:26:33 AM ******/ 设置ansi_nulls为on 去 设置quoted_identifier为on 去 CREATE FUNCTION [dbo].[fn_GetMonthFromDate] (@date datetime) 返回varchar (50) 作为 开始 声明@monthPart int

SET @monthPart = MONTH(@date) IF @monthPart = 1 BEGIN RETURN 'January' END ELSE IF @monthPart = 2 BEGIN RETURN 'February' END ELSE IF @monthPart = 3 BEGIN RETURN 'March' END ELSE IF @monthPart = 4 BEGIN RETURN 'April' END ELSE IF @monthPart = 5 BEGIN RETURN 'May' END ELSE IF @monthPart = 6 BEGIN RETURN 'June' END ELSE IF @monthPart = 7 BEGIN RETURN 'July' END ELSE IF @monthPart = 8 BEGIN RETURN 'August' END ELSE IF @monthPart = 9 BEGIN RETURN 'September' END ELSE IF @monthPart = 10 BEGIN RETURN 'October' END ELSE IF @monthPart = 11 BEGIN RETURN 'November' END ELSE IF @monthPart = 12 BEGIN RETURN 'December' END RETURN NULL END