在SQL中将月份编号转换为月份名称函数
我有几个月存储在SQL Server作为1,2,3,4,… 12。 我想把它们显示为1月,2月等。是否有像SQL Server中的函数MonthName(1)= January? 如果可能,我试图避免CASE语句。
有点哈克,但应该工作:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime))) 我认为这是获得月份名称的最佳方式
 Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 ) 
[编辑]
正如下面的Asif所说,另一种做法是
 Select DateName( month , DateAdd( month , @MonthNumber , -1 ) ) 
 SELECT DATENAME(month, GETDATE()) AS 'Month Name' 
 SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3) 
使用最好的方法
 Select DateName( month , DateAdd( month , @MonthNumber , -1 )) 
这很简单。
 select DATENAME(month, getdate()) 
输出:一月
以下为我工作:
CAST(GETDATE()作为CHAR(3))
除原来的
 SELECT DATENAME(m, str(2) + '/1/2011') 
你可以这样做
 SELECT DATENAME(m, str([column_name]) + '/1/2011') 
这样你可以得到表中所有行的名字。 其中[column_name]表示包含数值1到12的整数列
2代表任何整数,由联系人string我创build一个date,我可以提取月份。 '/ 1/2011'可以是任何date
如果你想用variables做这个
 DECLARE @integer int; SET @integer = 6; SELECT DATENAME(m, str(@integer) + '/1/2011') 
使用此语句将月份数值转换为月份名称。
 SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE())) 
在一些像希伯来语这样的语言环境中, 闰年依赖于年份,所以为了避免在这样的语言环境中出现错误,您可以考虑采用以下解决scheme:
 SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01') 
 您可以使用内置的CONVERTfunction 
 select CONVERT(varchar(3), Date, 100) as Month from MyTable. 
这将显示月份的前3个字符(JAN,FEB等)。
你可以使用转换functin如下
 CONVERT(VARCHAR(3), DATENAME(MM, GETDATE()), 100) 
这将肯定工作 – selectdate名称(M,GETDATE())
只要从今天的date减去当前月份,然后加回你的月份数字。 然后使用date名称函数在1行中给出全名。
 print datename(month,dateadd(month,-month(getdate()) + 9,getdate())) 
当我有date的时候,我认为这足以得到月份的名字。
 SELECT DATENAME(month ,GETDATE()) 
要将月份编号转换为月份名称,请尝试下面的内容
 declare @month smallint = 1 select DateName(mm,DATEADD(mm,@month - 1,0)) 
这个为我工作:
 @MetricMonthNumber (some number) SELECT (DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName FROM TableName 
来自@leoinfo和@Valentino Vranken的post。 只做了一个快速select,它的工作原理。
 Declare @MonthNumber int SET @MonthNumber=DatePart(Month,GETDATE()) Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 ) 
阐释:
-  第一个DecalrevariablesMonthNumber
-  获取返回月份编号的DatePart当前月份
- 第三个查询返回月份名称
SELECT DATENAME(MONTH,dateadd(month,-3,getdate()))
为我工作
 SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition> 
 SELECT DateName(M, DateAdd(M, @MONTHNUMBER, -1)) 
 select monthname(curdate()); 
要么
 select monthname('2013-12-12'); 
使用此语句获取月份名称:
 DECLARE @date datetime SET @date='2015/1/4 00:00:00' SELECT CAST(DATENAME(month,@date ) AS CHAR(3))AS 'Month Name' 
这会给你简短的月份名称。 像这样:1月,2月,3月等
这是我的解决scheme,利用别人的一些信息来解决问题。
 datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname 
SQL服务器中没有系统定义的function。 但是您可以创build自己的用户定义函数 – 标量函数。 您可以在对象资源pipe理器中为数据库find标量函数:可编程性 – >函数 – >标量值函数。 下面,我使用一个表variables来把它们放在一起。
 --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] 
你可以得到这样的date。 例如: – 用户表
 id name created_at 1 abc 2017-09-16 2 xyz 2017-06-10 
你可以得到像这样的月份名称
 select year(created_at), monthname(created_at) from users; 
产量
 +-----------+-------------------------------+ | year(created_at) | monthname(created_at) | +-----------+-------------------------------+ | 2017 | september | | 2017 | june | 
 to_char(to_date(V_MONTH_NUM,'MM'),'MONTH') 
 其中V_MONTH_NUM是月份编号 
 SELECT to_char(to_date(V_MONTH_NUM,'MM'),'MONTH') from dual; 
使用这个语句
 SELECT TO_CHAR(current_date,'dd MONTH yyyy') FROM dual 
这会将月份数字转换为月份完整string