Convert Month Number to Month Name Function in SQL

前端 未结 30 1484
予麋鹿
予麋鹿 2020-11-22 11:53

I have months stored in SQL Server as 1,2,3,4,...12. I would like to display them as January,February etc. Is there a function in SQL Server like MonthName(1) = January? I a

相关标签:
30条回答
  • 2020-11-22 12:47
    SELECT DateName(M, DateAdd(M, @MONTHNUMBER, -1))
    
    0 讨论(0)
  • 2020-11-22 12:48
    SELECT DATENAME(month, GETDATE()) AS 'Month Name'
    
    0 讨论(0)
  • 2020-11-22 12:48

    In some locales like Hebrew, there are leap months dependant upon the year so to avoid errors in such locales you might consider the following solution:

    SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')     
    
    0 讨论(0)
  • 2020-11-22 12:48

    This one worked for me:

    @MetricMonthNumber (some number)
    
    SELECT 
    (DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
    FROM TableName
    

    From a post above from @leoinfo and @Valentino Vranken. Just did a quick select and it works.

    0 讨论(0)
  • 2020-11-22 12:52

    Starting with SQL Server 2012, you can use FORMAT and DATEFROMPARTS to solve this problem. (If you want month names from other cultures, change: en-US)

    select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
    

    If you want a three-letter month:

    select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
    

    If you really want to, you can create a function for this:

    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
    
    0 讨论(0)
  • 2020-11-22 12:52
    select monthname(curdate());
    

    OR

    select monthname('2013-12-12');
    
    0 讨论(0)
提交回复
热议问题