Sai*_*han 201 sql t-sql sql-server sql-server-2005
我有几个月在SQL Server中存储为1,2,3,4,... 12.我想将它们显示为1月,2月等.在SQL Server中是否有像MonthName(1)= January这样的函数?如果可能的话,我试图避免CASE声明.
leo*_*nfo 259
我认为这是得到的最好方式月份的名字时,你有一个月数
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Run Code Online (Sandbox Code Playgroud)
要么
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
Run Code Online (Sandbox Code Playgroud)
Ale*_*kov 152
有点hacky但应该工作:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
Run Code Online (Sandbox Code Playgroud)
小智 90
SELECT DATENAME(month, GETDATE()) AS 'Month Name'
Run Code Online (Sandbox Code Playgroud)
小智 68
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
Run Code Online (Sandbox Code Playgroud)
Asi*_*sif 30
使用最佳方式
Select DateName( month , DateAdd( month , @MonthNumber , -1 ))
Run Code Online (Sandbox Code Playgroud)
Sae*_*man 21
这很简单.
select DATENAME(month, getdate())
Run Code Online (Sandbox Code Playgroud)
输出:1月
从 SQL Server 2012 开始,可以使用FORMAT和DATEFROMPARTS来解决这个问题。(如果你想从其他文化月份名称,更改:en-US)
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
Run Code Online (Sandbox Code Playgroud)
如果你想要一个三个字母的月份:
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
Run Code Online (Sandbox Code Playgroud)
如果你真的想,你可以为此创建一个函数:
CREATE FUNCTION fn_month_num_to_name
(
@month_num tinyint
)
RETURNS varchar(20)
AS
BEGIN
RETURN FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
END
Run Code Online (Sandbox Code Playgroud)
在某些语言环境(如希伯来语)中,闰月取决于年份,因此为避免此类语言环境中的错误,您可以考虑以下解决方案:
SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用内置CONVERT功能
select CONVERT(varchar(3), Date, 100) as Month from MyTable.
Run Code Online (Sandbox Code Playgroud)
这将显示月份的前3个字符(JAN,FEB等。)
小智 5
除了原创
SELECT DATENAME(m, str(2) + '/1/2011')
你可以这样做
SELECT DATENAME(m, str([column_name]) + '/1/2011')
这样,您就可以获得表中所有行的名称.其中[column_name]表示包含数值1到12的整数列
2表示任何整数,通过联系人字符串我创建了一个日期,我可以提取月份.'/ 1/2011'可以是任何日期
如果你想用变量做这个
DECLARE @integer int;
SET @integer = 6;
SELECT DATENAME(m, str(@integer) + '/1/2011')
Run Code Online (Sandbox Code Playgroud)
使用此语句将“月份”数值转换为“月份名称”。
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
Run Code Online (Sandbox Code Playgroud)
小智 5
只需从今天的日期中减去当前月份,然后加回您的月份数字即可。然后使用 datename 函数在 1 行中给出全名。
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
Run Code Online (Sandbox Code Playgroud)