The SQL Server DATEDIFF()
function returns the difference between two dates, based on a specified date part. This function is useful for calculating the difference between dates in various units such as days, months, or years.
SELECT DATEDIFF(datepart, startdate, enddate);
The DATEDIFF()
function takes three arguments:
datepart
: The part of the date to calculate the difference. Common values include year
, quarter
, month
, day
, week
, hour
, minute
, second
, and millisecond
.startdate
: The starting date for the calculation.enddate
: The ending date for the calculation.Let's look at some examples of SQL Server DATEDIFF()
function queries:
SELECT DATEDIFF(day, '2024-06-01', '2024-06-15') AS date_difference;
This query returns the difference in days between '2024-06-01' and '2024-06-15'. The result will be:
date_difference
---------------
14
SELECT DATEDIFF(month, '2024-01-01', '2024-06-01') AS date_difference;
This query returns the difference in months between '2024-01-01' and '2024-06-01'. The result will be:
date_difference
---------------
5
SELECT DATEDIFF(year, '2020-01-01', '2024-01-01') AS date_difference;
This query returns the difference in years between '2020-01-01' and '2024-01-01'. The result will be:
date_difference
---------------
4
SELECT order_date, DATEDIFF(day, order_date, GETDATE()) AS days_since_order
FROM orders;
This query calculates the difference in days between the order_date
column and the current date for each record in the orders
table. The result will show the original order_date
and the corresponding days_since_order
.
DECLARE @start_date DATETIME, @end_date DATETIME;
SET @start_date = '2024-01-01';
SET @end_date = '2024-06-01';
SELECT DATEDIFF(month, @start_date, @end_date) AS date_difference;
This query uses variables to store the start date and end date, and then calculates the difference in months between them. The result will be:
date_difference
---------------
5
Let's go through a complete example that includes creating a table, inserting data, and using the DATEDIFF()
function.
This step involves creating a new table named subscriptions
to store some sample data with subscription start and end dates.
CREATE TABLE subscriptions (
id INT PRIMARY KEY,
start_date DATETIME,
end_date DATETIME
);
In this example, we create a table named subscriptions
with columns for id
, start_date
, and end_date
.
This step involves inserting some sample data into the subscriptions
table.
INSERT INTO subscriptions (id, start_date, end_date) VALUES (1, '2024-01-01', '2024-06-01');
INSERT INTO subscriptions (id, start_date, end_date) VALUES (2, '2023-05-01', '2024-05-01');
INSERT INTO subscriptions (id, start_date, end_date) VALUES (3, '2022-08-01', '2024-08-01');
Here, we insert data into the subscriptions
table.
This step involves using the DATEDIFF()
function to calculate the difference in days between the start_date
and end_date
columns.
SELECT id, start_date, end_date, DATEDIFF(day, start_date, end_date) AS duration_in_days
FROM subscriptions;
This query retrieves the id
, start_date
, end_date
, and the difference in days between the start_date
and end_date
columns for each row in the subscriptions
table. The result will be:
id start_date end_date duration_in_days
--- ------------------- ------------------- -----------------
1 2024-01-01 00:00:00 2024-06-01 00:00:00 152
2 2023-05-01 00:00:00 2024-05-01 00:00:00 366
3 2022-08-01 00:00:00 2024-08-01 00:00:00 731
The SQL Server DATEDIFF()
function is a powerful tool for calculating the difference between two dates based on a specified date part. Understanding how to use the DATEDIFF()
function and its syntax is essential for effective date calculations and data processing in SQL Server.