Command guide
intermediate date-time MySQL MariaDB SQL Server PostgreSQL SQLite
Calculate The Number Of Days Between Two Dates
Find how many days separate two date values using each engine's date difference function.
5/5 supported engines validation-green 1 example 2 scenarios
Docker-validated Not currently validation-green
Example 1
Calculate the number of days each project ran
Alpha ran from January 5 to January 20, a span of 15 days. Beta ran from February 1 to February 28, a span of 27 days. Note that MySQL and SQL Server share the function name but differ in argument order: MySQL puts the end date first, SQL Server puts the unit first and the start date second.
Source table data Setup
CREATE TABLE projects (
id INT,
name VARCHAR(50),
start_date VARCHAR(10),
end_date VARCHAR(10)
);
INSERT INTO
projects (id, name, start_date, end_date)
VALUES
(1, 'Alpha', '2024-01-05', '2024-01-20'),
(2, 'Beta', '2024-02-01', '2024-02-28');
Validated query SQL
SELECT
name,
DATEDIFF (end_date, start_date) AS days
FROM
projects
ORDER BY
id;
Source table data Setup
CREATE TABLE projects (
id INT,
name VARCHAR(50),
start_date VARCHAR(10),
end_date VARCHAR(10)
);
INSERT INTO
projects (id, name, start_date, end_date)
VALUES
(1, 'Alpha', '2024-01-05', '2024-01-20'),
(2, 'Beta', '2024-02-01', '2024-02-28');
Validated query SQL
SELECT
name,
DATEDIFF (DAY, start_date, end_date) AS days
FROM
projects
ORDER BY
id;
Source table data Setup
CREATE TABLE projects (
id INT,
name VARCHAR(50),
start_date VARCHAR(10),
end_date VARCHAR(10)
);
INSERT INTO
projects (id, name, start_date, end_date)
VALUES
(1, 'Alpha', '2024-01-05', '2024-01-20'),
(2, 'Beta', '2024-02-01', '2024-02-28');
Validated query SQL
SELECT name, end_date::DATE - start_date::DATE AS days FROM projects ORDER BY id;
Source table data Setup
CREATE TABLE projects (
id INT,
name VARCHAR(50),
start_date VARCHAR(10),
end_date VARCHAR(10)
);
INSERT INTO
projects (id, name, start_date, end_date)
VALUES
(1, 'Alpha', '2024-01-05', '2024-01-20'),
(2, 'Beta', '2024-02-01', '2024-02-28');
Validated query SQL
SELECT
name,
CAST(
JULIANDAY (end_date) - JULIANDAY (start_date) AS INT
) AS days
FROM
projects
ORDER BY
id;
MySQL/MariaDB use DATEDIFF(end, start). SQL Server uses DATEDIFF(day, start, end) — note reversed date argument order. PostgreSQL subtracts DATE values directly. SQLite uses JULIANDAY subtraction.