Published on

March 8, 2020

How to Sort Months Chronologically in SQL Server

Visualizing data in a time period is crucial for reporting and analyzing trends. However, when importing data into SQL Server, months are often sorted alphabetically instead of chronologically. In this article, we will explore how to sort months chronologically in SQL Server.

Reproducing the Error

Let’s first understand how the error occurs. Suppose we have a simple table with two columns – Month and Sales. The Month column contains the values from “January” to “December”. When we query this table, the months are sorted alphabetically instead of chronologically.

Solution – Sort Months Chronologically

To sort months chronologically in SQL Server, we can use the DATENAME function to extract the month name and the DATEPART function to extract the month number. Here’s an example:

SELECT Month, Sales
FROM YourTable
ORDER BY DATEPART(MONTH, CONVERT(DATE, '01 ' + Month + ' 2020')) ASC

In the above query, we convert the Month column into a date format by concatenating it with ’01’ and ‘2020’. Then, we use the DATEPART function to extract the month number and sort the results in ascending order.

Example

Let’s consider the following example:

CREATE TABLE Sales (
    Month VARCHAR(20),
    Sales INT
)

INSERT INTO Sales (Month, Sales)
VALUES ('January', 100),
       ('February', 150),
       ('March', 200),
       ('April', 180),
       ('May', 220),
       ('June', 250),
       ('July', 300),
       ('August', 280),
       ('September', 320),
       ('October', 350),
       ('November', 400),
       ('December', 380)

SELECT Month, Sales
FROM Sales
ORDER BY DATEPART(MONTH, CONVERT(DATE, '01 ' + Month + ' 2020')) ASC

The above query will return the sales data sorted chronologically by month.

Conclusion

In this article, we have learned how to sort months chronologically in SQL Server. By using the DATENAME and DATEPART functions, we can extract the month name and number, and sort the data accordingly. Sorting months chronologically is essential for accurate trend analysis and reporting.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.