In this article, I’ll explain various methods for finding and working with the max() for date in SQL Server with multiple examples.
SQL Server MAX Date
The foundation of finding the most recent date in SQL Server is the MAX function, which returns the highest value in a selected column. When applied to date columns, it identifies the most recent date in your dataset.
Syntax
SELECT MAX(date_column) FROM table_name;
Example 1: Basic One
For example, if we have an orders table and want to find the most recent order date, we can execute the below query.
SELECT MAX(order_date) AS "Most Recent Order"
FROM orders;
After executing the above query, I got the expected output, as shown in the screenshot below.

Example 2: Using Subquery with GROUP BY
The query below first identifies the maximum date for each order and then returns to the original table to get all columns for those records.
SELECT o.order_id, o.order_date, o.order_name
FROM orders o
INNER JOIN (
SELECT order_id, MAX(order_date) as max_date
FROM orders
GROUP BY order_id
) latest ON o.order_id = latest.order_id AND o.order_date = latest.max_date;
After executing the above query, I got the expected output, as shown in the below screenshot.

Example 3: Using ROW_NUMBER() Function
The ROW_NUMBER() function often provides better performance for complex queries. This method assigns a row number to each record within its customer partition, ordered by date descending, then filters for only the first row in each group.
WITH RankedOrders AS (
SELECT
order_id,
order_date,
order_name,
ROW_NUMBER() OVER(PARTITION BY order_id ORDER BY order_date DESC) as rn
FROM Orders
)
SELECT
order_id,
order_date,
order_name
FROM RankedOrders
WHERE rn = 1;
After executing the above query, I got the expected output, as shown in the screenshot below.

Example 4: Finding Records with the Overall Latest Date
You can execute the query below if you need to find all records that occurred on the most recent date in your entire dataset. This will return all orders placed on the latest date in the system.
SELECT order_id, order_name, order_date
FROM orders
WHERE order_date = (SELECT MAX(order_date) FROM orders);
After executing the above query, I got the expected output, which is shown in the screenshot below.

Optimizing MAX Date Queries for Better Performance
Finding maximum dates can become a performance bottleneck, especially with large datasets. Here are some optimization techniques:
1. Proper Indexing
Creating an index on your date column is critical for performance optimization. The query below can help you do that.
CREATE INDEX idx_order ON orders(order_date);
After executing the above query, I got the expected output shown in the screenshot below.

Consider a composite index for queries frequently finding the maximum date within groups. The query below can be used.
CREATE INDEX idx_order_date ON orders(order_id, order_date DESC);
After executing the above query, I got the expected output, as shown in the below screenshot.

2. Using Filtered Indexes for Recent Data
If your application mostly queries recent dates, consider a filtered index:
CREATE INDEX idx_recent_orders ON orders(order_date)
WHERE order_date > '2024-01-01';
After executing the above query, I got the expected output, as shown in the below screenshot.

Handling NULL Date Values
MAX() will ignore NULL values, which can lead to unexpected results. However, you can explicitly use the query below to handle the NULL date.
SELECT order_id,
MAX(COALESCE(order_date, '1900-01-01')) as latest_order
FROM orders
GROUP BY order_id;
After executing the above query, I got the expected output, as shown in the below screenshot.

Conclusion
Finding max dates in SQL Server is essential for developers. This article provides the best output by using the above examples. For better performance, try creating indexes as mentioned above.
You may also like the following articles below
- SQL Server Min Date
- ISDATE Function in SQL Server
- DATEADD Function in SQL Server
- SQL Server DATETRUNC Function
- How to use SQL Server DATE_BUCKET Function
- DATEPART Function in SQL Server
After working for more than 15 years in the Software field, especially in Microsoft technologies, I have decided to share my expert knowledge of SQL Server. Check out all the SQL Server and related database tutorials I have shared here. Most of the readers are from countries like the United States of America, the United Kingdom, New Zealand, Australia, Canada, etc. I am also a Microsoft MVP. Check out more here.