Bird
Raised Fist0
MySQLquery~5 mins

DATE_ADD and DATE_SUB in MySQL - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the MySQL function DATE_ADD() do?
DATE_ADD() adds a specified time interval to a date and returns the new date.
Click to reveal answer
beginner
How does DATE_SUB() differ from DATE_ADD()?
DATE_SUB() subtracts a specified time interval from a date, while DATE_ADD() adds it.
Click to reveal answer
beginner
Write a simple example of DATE_ADD() to add 5 days to '2024-06-01'.
SELECT DATE_ADD('2024-06-01', INTERVAL 5 DAY); -- Result: '2024-06-06'
Click to reveal answer
intermediate
What types of intervals can you use with DATE_ADD() and DATE_SUB()?
You can use intervals like DAY, MONTH, YEAR, HOUR, MINUTE, SECOND, and more.
Click to reveal answer
beginner
Why would you use DATE_SUB() in a database query?
To find a date before a given date, such as finding records older than a certain number of days.
Click to reveal answer
What will this query return? SELECT DATE_ADD('2024-06-10', INTERVAL 3 DAY);
A'2024-06-03'
B'2024-06-07'
C'2024-06-13'
D'2024-07-10'
Which function subtracts time from a date in MySQL?
ADATE_SUB()
BDATE_ADD()
CDATE_DIFF()
DDATE_REMOVE()
What interval keyword would you use to add 2 months using DATE_ADD()?
ADAY
BMONTH
CYEAR
DHOUR
If you want to find the date 10 days before today, which query is correct?
ASELECT DATE_SUB(CURDATE(), INTERVAL -10 DAY);
BSELECT DATE_ADD(CURDATE(), INTERVAL 10 DAY);
CSELECT DATE_ADD(CURDATE(), INTERVAL -10 DAY);
DSELECT DATE_SUB(CURDATE(), INTERVAL 10 DAY);
Can DATE_ADD() and DATE_SUB() be used with time intervals like HOUR and MINUTE?
AYes, they support various time units including HOUR and MINUTE.
BNo, only DAY and MONTH are supported.
COnly DATE_ADD() supports time intervals.
DOnly DATE_SUB() supports time intervals.
Explain how DATE_ADD() and DATE_SUB() work in MySQL and give an example of each.
Think about adding or subtracting time intervals from a date.
You got /4 concepts.
    Describe a real-life situation where you might use DATE_SUB() in a database query.
    Consider situations like finding expired items or past events.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the MySQL function DATE_ADD(date, INTERVAL expr unit) do?
      easy
      A. Returns the current date and time
      B. Subtracts a specified time interval from a date
      C. Adds a specified time interval to a date
      D. Formats a date into a string

      Solution

      1. Step 1: Understand the function purpose

        The function DATE_ADD is designed to add a time interval to a given date value.
      2. Step 2: Compare options with function behavior

        'Adds a specified time interval to a date' correctly states that it adds a specified time interval. 'Subtracts a specified time interval from a date' describes DATE_SUB, not DATE_ADD. The options for returning the current date and time and formatting a date into a string describe unrelated functions.
      3. Final Answer:

        Adds a specified time interval to a date -> Option C
      4. Quick Check:

        DATE_ADD adds time interval [OK]
      Hint: DATE_ADD adds time; DATE_SUB subtracts time [OK]
      Common Mistakes:
      • Confusing DATE_ADD with DATE_SUB
      • Thinking DATE_ADD formats dates
      • Assuming DATE_ADD returns current date
      2. Which of the following is the correct syntax using DATE_SUB to subtract 10 days from the date '2024-06-15' in MySQL?
      easy
      A. DATE_ADD('2024-06-15', INTERVAL -10 DAY)
      B. DATE_SUB('2024-06-15', INTERVAL 10 DAY)
      C. DATE_SUB('2024-06-15', 10 DAY)
      D. DATE_ADD('2024-06-15', 10 DAYS)

      Solution

      1. Step 1: Check correct function and syntax for subtraction

        To subtract days, use DATE_SUB with INTERVAL keyword and unit DAY.
      2. Step 2: Validate each option's syntax

        DATE_SUB('2024-06-15', INTERVAL 10 DAY) uses correct syntax: DATE_SUB('date', INTERVAL 10 DAY). DATE_ADD('2024-06-15', INTERVAL -10 DAY) uses DATE_ADD with negative interval, which is not recommended. DATE_SUB('2024-06-15', 10 DAY) misses INTERVAL keyword. DATE_ADD('2024-06-15', 10 DAYS) misses the INTERVAL keyword and uses DATE_ADD which adds instead of subtracts.
      3. Final Answer:

        DATE_SUB('2024-06-15', INTERVAL 10 DAY) -> Option B
      4. Quick Check:

        Correct syntax uses DATE_SUB with INTERVAL [OK]
      Hint: Use DATE_SUB with INTERVAL and unit DAY to subtract days [OK]
      Common Mistakes:
      • Omitting INTERVAL keyword
      • Using plural unit like DAYS instead of DAY
      • Using DATE_ADD with negative interval
      3. What is the result of this query?
      SELECT DATE_ADD('2024-06-10', INTERVAL 3 MONTH) AS new_date;
      medium
      A. 2024-03-10
      B. 2024-06-10
      C. 2024-06-13
      D. 2024-09-10

      Solution

      1. Step 1: Understand DATE_ADD with MONTH interval

        The query adds 3 months to the date '2024-06-10'. Adding 3 months to June 10, 2024, results in September 10, 2024.
      2. Step 2: Match the calculated date with options

        2024-09-10 shows '2024-09-10', which matches the expected result. Other options are incorrect dates or no change.
      3. Final Answer:

        2024-09-10 -> Option D
      4. Quick Check:

        June 10 + 3 months = September 10 [OK]
      Hint: Add months carefully; day stays same if possible [OK]
      Common Mistakes:
      • Adding days instead of months
      • Confusing month addition with subtraction
      • Expecting day to change unexpectedly
      4. Identify the error in this MySQL query:
      SELECT DATE_SUB('2024-06-20', 5 DAY);
      medium
      A. Missing INTERVAL keyword before 5 DAY
      B. Incorrect function name, should be DATE_ADD
      C. Date format is invalid
      D. DAY should be plural DAYS

      Solution

      1. Step 1: Review DATE_SUB syntax

        The correct syntax requires the INTERVAL keyword before the number and unit, like DATE_SUB(date, INTERVAL expr unit).
      2. Step 2: Identify the missing keyword

        The query uses DATE_SUB('2024-06-20', 5 DAY) missing INTERVAL, causing syntax error.
      3. Final Answer:

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

        DATE_SUB needs INTERVAL keyword [OK]
      Hint: Always include INTERVAL keyword with DATE_ADD/SUB [OK]
      Common Mistakes:
      • Omitting INTERVAL keyword
      • Using plural unit DAYS instead of DAY
      • Confusing DATE_ADD and DATE_SUB
      5. You want to find the date 2 weeks before the last day of the current month in MySQL using DATE_SUB. Which query correctly achieves this?
      hard
      A. SELECT DATE_SUB(LAST_DAY(CURDATE()), INTERVAL 2 WEEK) AS result;
      B. SELECT DATE_ADD(LAST_DAY(CURDATE()), INTERVAL -2 WEEK) AS result;
      C. SELECT DATE_SUB(CURDATE(), INTERVAL 2 WEEK) AS result;
      D. SELECT DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 2 WEEK) AS result;

      Solution

      1. Step 1: Understand the requirement

        We need the date 2 weeks before the last day of the current month. LAST_DAY(CURDATE()) gives the last day of this month.
      2. Step 2: Apply correct date arithmetic

        Subtracting 2 weeks from that date is done with DATE_SUB(..., INTERVAL 2 WEEK). SELECT DATE_SUB(LAST_DAY(CURDATE()), INTERVAL 2 WEEK) AS result; uses this correctly. SELECT DATE_ADD(LAST_DAY(CURDATE()), INTERVAL -2 WEEK) AS result; uses DATE_ADD instead of DATE_SUB. SELECT DATE_SUB(CURDATE(), INTERVAL 2 WEEK) AS result; subtracts from current date, not last day. SELECT DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 2 WEEK) AS result; adds 2 weeks, which is incorrect.
      3. Final Answer:

        SELECT DATE_SUB(LAST_DAY(CURDATE()), INTERVAL 2 WEEK) AS result; -> Option A
      4. Quick Check:

        Subtract 2 weeks from last day using DATE_SUB [OK]
      Hint: Use LAST_DAY with DATE_SUB for relative month-end dates [OK]
      Common Mistakes:
      • Subtracting from current date instead of last day
      • Using DATE_ADD with positive interval instead of subtraction
      • Confusing weeks with days in 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