在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')
您可以使用内置的CONVERT
function
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 )
阐释:
- 第一个Decalrevariables
MonthNumber
- 获取返回月份编号的
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