Earlier I wrote a blog post about SQL SERVER – List the Name of the Months Between Date Ranges. It was written in the response to the question – How to list the name of the months between two date ranges?
When I wrote the blog post, there was a small error on my part in the script where I forgot to include the beginning month in the answer of the question. SQL Server Expert Sanjay Monpara caught this error and he immediately wrote a comment on the blog post with a correction. Sanjay has previously contributed to the blog with his expertise and is well known to the readers.
He modified my script to correct the error. Here is the script which generates names of the months between two dates.
DECLARE @StartDate DATETIME,
@EndDate DATETIME;
SELECT @StartDate = '20140301' -- March
,@EndDate = '20140901'; -- September
SELECT DATENAME(MONTH, DATEADD(MONTH, nos.monthnos, @StartDate)-1) AS MonthName
FROM (SELECT 1 monthnos UNION SELECT 2 UNION SELECT 3
UNION SELECT 4 UNION SELECT 5 UNION SELECT 6
UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
UNION SELECT 10 UNION SELECT 11 UNION SELECT 12) nos
WHERE nos.monthnos <= DATEDIFF(MONTH, @StartDate, @EndDate)+1;
Above script does return the name of the months between date ranges. There are few more great suggestions in the comments of the blog post, I encourage you to check them out.
Reference: Pinal Dave (https://blog.sqlauthority.com)
3 Comments. Leave new
Can we use any other function to rearrange the same data in date range.
These is some issue when you give end date with some other year for example @EndDate = ‘20150501’.
What issue Suraj?