SQL Date Functions

SQL DATEADD: Add Days, Months, Years to a Date (All Databases)

Add or subtract time intervals from dates in SQL. Covers DATEADD, DATE_ADD, INTERVAL syntax across MySQL, PostgreSQL, SQL Server, Oracle.

Mar 12, 20265 min read

Overview

Adding or subtracting days, months, or years from a date is different in every database. This guide covers the exact syntax for each.

MySQL

-- DATE_ADD / DATE_SUB:
SELECT DATE_ADD('2026-03-12', INTERVAL 7 DAY);     -- '2026-03-19'
SELECT DATE_ADD('2026-03-12', INTERVAL 3 MONTH);   -- '2026-06-12'
SELECT DATE_SUB('2026-03-12', INTERVAL 1 YEAR);    -- '2025-03-12'

-- + INTERVAL shorthand:
SELECT '2026-03-12' + INTERVAL 30 DAY;
SELECT NOW() - INTERVAL 24 HOUR;

-- Practical: orders from last 7 days:
SELECT * FROM orders
WHERE created_at >= NOW() - INTERVAL 7 DAY;

PostgreSQL

-- INTERVAL arithmetic:
SELECT '2026-03-12'::DATE + INTERVAL '7 days';    -- 7 days later
SELECT '2026-03-12'::DATE + INTERVAL '3 months';  -- 3 months later
SELECT '2026-03-12'::DATE - INTERVAL '1 year';    -- 1 year ago

-- Or simply add integers (adds days):
SELECT '2026-03-12'::DATE + 7;  -- '2026-03-19'

-- Last 30 days:
SELECT * FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';

-- make_interval:
SELECT NOW() + make_interval(months => 3);

SQL Server

-- DATEADD(part, number, date):
SELECT DATEADD(DAY, 7, '2026-03-12');     -- 7 days later
SELECT DATEADD(MONTH, 3, '2026-03-12');   -- 3 months later
SELECT DATEADD(YEAR, -1, '2026-03-12');   -- 1 year ago
SELECT DATEADD(HOUR, -24, GETDATE());     -- 24 hours ago

-- Parts: YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND

-- Last 7 days:
SELECT * FROM orders
WHERE created_at >= DATEADD(DAY, -7, GETDATE());

Oracle

-- Add days (simple arithmetic):
SELECT SYSDATE + 7 FROM DUAL;              -- 7 days later
SELECT SYSDATE - 30 FROM DUAL;             -- 30 days ago

-- ADD_MONTHS:
SELECT ADD_MONTHS(SYSDATE, 3) FROM DUAL;   -- 3 months later
SELECT ADD_MONTHS(SYSDATE, -12) FROM DUAL;  -- 1 year ago

-- INTERVAL:
SELECT SYSDATE + INTERVAL '7' DAY FROM DUAL;
SELECT SYSDATE + INTERVAL '3' MONTH FROM DUAL;

Skip the Syntax Lookup

Instead of memorizing DATEADD / DATE_ADD / INTERVAL syntax for each database, describe what you need in plain English and let AI2SQL generate the correct query.

Try AI2SQL Free

No credit card required

Frequently Asked Questions

How do I add days to a date in SQL?

MySQL: DATE_ADD(date, INTERVAL n DAY). PostgreSQL: date + INTERVAL 'n days'. SQL Server: DATEADD(DAY, n, date). Oracle: date + n.

How do I get records from the last 30 days?

Use WHERE created_at >= NOW() - INTERVAL 30 DAY (MySQL), NOW() - INTERVAL '30 days' (PostgreSQL), or DATEADD(DAY, -30, GETDATE()) (SQL Server).

Can AI2SQL generate date math queries?

Yes. Say 'get orders from the last 7 days' or 'find subscriptions expiring in the next 30 days' and AI2SQL generates the correct date arithmetic.

Generate SQL from Plain English

Stop looking up syntax. Describe what you need and AI2SQL writes the query.

Try AI2SQL Free

No credit card required