Bird
Raised Fist0
SQLquery~5 mins

DATE arithmetic (DATEDIFF, DATE_ADD) in SQL

Choose your learning style10 modes available
Introduction
We use date arithmetic to find the difference between dates or to add days to a date. This helps us answer questions about time easily.
To find how many days passed between two events, like order date and delivery date.
To calculate a future date, like a due date 10 days after today.
To check if a subscription expired by comparing current date and expiry date.
To find the age of something by subtracting birth date from today.
To schedule reminders by adding days to a start date.
Syntax
SQL
DATEDIFF(date1, date2)
DATE_ADD(date, INTERVAL number DAY)
DATEDIFF returns the number of days between date1 and date2 (date1 - date2).
DATE_ADD adds a specified number of days to a date.
Examples
Finds how many days between June 10, 2024 and June 1, 2024.
SQL
SELECT DATEDIFF('2024-06-10', '2024-06-01');
Adds 5 days to June 1, 2024, resulting in June 6, 2024.
SQL
SELECT DATE_ADD('2024-06-01', INTERVAL 5 DAY);
Finds how many days have passed since January 1, 2024 until today.
SQL
SELECT DATEDIFF(CURRENT_DATE, '2024-01-01');
Finds the date 30 days from today.
SQL
SELECT DATE_ADD(CURRENT_DATE, INTERVAL 30 DAY);
Sample Program
This query calculates the days between June 15 and June 10, 2024, and adds 7 days to June 10, 2024.
SQL
SELECT
  DATEDIFF('2024-06-15', '2024-06-10') AS days_difference,
  DATE_ADD('2024-06-10', INTERVAL 7 DAY) AS new_date;
OutputSuccess
Important Notes
DATEDIFF counts full days between dates, ignoring time parts.
DATE_ADD can add other intervals like MONTH or YEAR, but here we focus on DAY.
Always use quotes around date strings in SQL.
Summary
DATEDIFF helps find the number of days between two dates.
DATE_ADD helps find a new date by adding days to an existing date.
These functions make working with dates easy and clear.

Practice

(1/5)
1. What does the SQL function DATEDIFF('2024-06-10', '2024-06-01') return?
easy
A. 1
B. 10
C. 11
D. 9

Solution

  1. Step 1: Understand DATEDIFF parameters

    DATEDIFF calculates the number of days between the first date and the second date.
  2. Step 2: Calculate the difference

    From June 1 to June 10, there are 9 days difference (10 - 1 = 9).
  3. Final Answer:

    9 -> Option D
  4. Quick Check:

    DATEDIFF('2024-06-10', '2024-06-01') = 9 [OK]
Hint: Subtract dates to get days difference [OK]
Common Mistakes:
  • Counting both start and end dates
  • Mixing order of dates in DATEDIFF
  • Assuming difference is 10 instead of 9
2. Which of the following is the correct syntax to add 5 days to the date '2024-06-01' using DATE_ADD?
easy
A. DATE_ADD('2024-06-01', INTERVAL 5 DAY)
B. DATE_ADD('2024-06-01', 5 DAY)
C. DATE_ADD('2024-06-01', INTERVAL DAY 5)
D. DATE_ADD('2024-06-01', DAY 5 INTERVAL)

Solution

  1. Step 1: Recall DATE_ADD syntax

    The correct syntax is DATE_ADD(date, INTERVAL number unit), e.g., INTERVAL 5 DAY.
  2. Step 2: Check each option

    Only DATE_ADD('2024-06-01', INTERVAL 5 DAY) follows the correct syntax with INTERVAL 5 DAY.
  3. Final Answer:

    DATE_ADD('2024-06-01', INTERVAL 5 DAY) -> Option A
  4. Quick Check:

    Correct DATE_ADD syntax uses INTERVAL before number and unit [OK]
Hint: Use INTERVAL keyword before number and unit [OK]
Common Mistakes:
  • Omitting INTERVAL keyword
  • Swapping number and unit order
  • Placing INTERVAL after unit
3. What is the result of this SQL query?
SELECT DATEDIFF('2024-07-01', DATE_ADD('2024-06-25', INTERVAL 3 DAY)) AS diff;
medium
A. 6
B. 3
C. 5
D. 4

Solution

  1. Step 1: Calculate DATE_ADD('2024-06-25', INTERVAL 3 DAY)

    Adding 3 days to June 25 gives June 28, 2024.
  2. Step 2: Calculate DATEDIFF('2024-07-01', '2024-06-28')

    The difference between July 1 and June 28 is 3 days (June 29, 30, July 1).
  3. Final Answer:

    3 -> Option B
  4. Quick Check:

    DATEDIFF('2024-07-01', '2024-06-28') = 3 [OK]
Hint: Calculate DATE_ADD first, then DATEDIFF [OK]
Common Mistakes:
  • Counting days incorrectly between dates
  • Forgetting to add days before DATEDIFF
  • Assuming DATEDIFF counts inclusive days
4. Identify the error in this SQL statement:
SELECT DATE_ADD('2024-06-01', 5 DAY);
medium
A. DATE_ADD cannot add days
B. Wrong date format
C. Missing INTERVAL keyword before 5 DAY
D. Extra semicolon inside function

Solution

  1. Step 1: Review DATE_ADD syntax

    DATE_ADD requires INTERVAL keyword before the number and unit.
  2. Step 2: Check the given statement

    The statement misses INTERVAL before '5 DAY', causing syntax error.
  3. Final Answer:

    Missing INTERVAL keyword before 5 DAY -> Option C
  4. Quick Check:

    DATE_ADD needs INTERVAL before number and unit [OK]
Hint: Always use INTERVAL before number and unit [OK]
Common Mistakes:
  • Omitting INTERVAL keyword
  • Using wrong date format
  • Adding semicolon inside function
5. You want to find how many days are left until a deadline 10 days after '2024-06-15'. Which SQL query correctly calculates the days left from '2024-06-20'?
hard
A. SELECT DATEDIFF(DATE_ADD('2024-06-15', INTERVAL 10 DAY), '2024-06-20') AS days_left;
B. SELECT DATEDIFF('2024-06-20', DATE_ADD('2024-06-15', INTERVAL 10 DAY)) AS days_left;
C. SELECT DATEDIFF('2024-06-15', DATE_ADD('2024-06-20', INTERVAL 10 DAY)) AS days_left;
D. SELECT DATEDIFF('2024-06-20', '2024-06-15' + INTERVAL 10 DAY) AS days_left;

Solution

  1. Step 1: Calculate deadline date

    Deadline is 10 days after June 15, so DATE_ADD('2024-06-15', INTERVAL 10 DAY) = June 25.
  2. Step 2: Calculate days left from June 20 to deadline

    DATEDIFF(deadline, current_date) = DATEDIFF('2024-06-25', '2024-06-20') = 5 days left.
  3. Final Answer:

    SELECT DATEDIFF(DATE_ADD('2024-06-15', INTERVAL 10 DAY), '2024-06-20') AS days_left; -> Option A
  4. Quick Check:

    Days left = deadline - current date = 5 [OK]
Hint: Subtract current date from deadline date [OK]
Common Mistakes:
  • Swapping date order in DATEDIFF
  • Adding interval to wrong date
  • Using wrong syntax for INTERVAL
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard