Working with dates and times is a common task in SQL. You may encounter a situation where you have months stored as integers (from 1 to 12) and you need to convert them to their respective month names (from “January” to “December”). This can be quite useful for generating reports or performing data analysis that’s more readable for human users. Let us learn How to Convert Month Number to Month Name.

Method 1: Using DateName and DateAdd
This method uses SQL Server’s DateName and DateAdd functions. The DateName function returns a character string that represents the specified datepart of the specified date. The DateAdd function returns a specified date with the specified number interval added to the specified datepart of that date.
DECLARE @MonthNumber INT SET @MonthNumber = 1 -- replace 1 with your month number SELECT DateName(month, DateAdd(month, @MonthNumber, -1)) AS MonthName
In this statement, we’re adding -1 to a month number, effectively turning the month number into a date, and then extracting the month name from that date.
Method 2: Using Concatenated String and Substring
This method might seem a bit unconventional at first, but it works, and it’s deterministic, meaning it can be used as a computed column too. In this method, we use a concatenated string of abbreviated month names and extract the desired month name using the SUBSTRING function.
DECLARE @MonthNumber INT
SET @MonthNumber = 1 -- replace 1 with your month number
SELECT SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ',
(@MonthNumber * 4) - 3, 3) AS MonthNameHere, we’re using the month number to calculate the starting position in the concatenated string and then extracting a substring of length 3 (the length of the abbreviated month name). (Source: Stackoverflow)
Method 3: Using FORMAT and DATEFROMPARTS
Starting with SQL Server 2012, you can use the FORMAT and DATEFROMPARTS functions to solve this problem. The DATEFROMPARTS function returns a date value for the date, which is created from the specified year, month, and day. The FORMAT function returns a value formatted with the specified format and optional culture.
DECLARE @MonthNumber INT SET @MonthNumber = 1 -- replace 1 with your month number SELECT FORMAT(DATEFROMPARTS(1900, @MonthNumber, 1), 'MMMM', 'en-US') AS MonthName
This statement constructs a date from the year 1900 and the provided month number, then formats that date to only show the full month name. If you want a three-letter month, you can use ‘MMM’ instead of ‘MMMM’ in the FORMAT function.
DECLARE @MonthNumber INT SET @MonthNumber = 1 -- replace 1 with your month number SELECT FORMAT(DATEFROMPARTS(1900, @MonthNumber, 1), 'MMM', 'en-US') AS MonthName
In conclusion, converting numerical month values to their respective names in SQL Server can be done in a variety of ways. The method you choose will likely depend on your specific needs and the version of SQL Server you’re using.
You can watch my YouTube videos over here.
Reference:Â Pinal Dave (https://blog.sqlauthority.com)




