📖 Scenario: You are managing a small library database. You want to calculate due dates for borrowed books by adding a fixed loan period to the borrow date.
🎯 Goal: Build a SQL query that adds an interval of days to a borrow date to find the due date for returning books.
📋 What You'll Learn
Create a table named borrowed_books with columns book_id (integer) and borrow_date (date).
Insert three rows with specific book_id and borrow_date values.
Define a variable or use a fixed interval of 14 days representing the loan period.
Write a SELECT query that shows book_id, borrow_date, and a new column due_date which is borrow_date plus the 14-day interval.
💡 Why This Matters
🌍 Real World
Libraries, rental services, and booking systems often need to calculate due dates by adding fixed time intervals to start dates.
💼 Career
Understanding date arithmetic with intervals is essential for database developers and analysts working with time-based data.
Progress0 / 4 steps
1
Create the borrowed_books table and insert data
Create a table called borrowed_books with columns book_id as integer and borrow_date as date. Insert these exact rows: (1, '2024-06-01'), (2, '2024-06-05'), and (3, '2024-06-10').
PostgreSQL
Hint
Use CREATE TABLE to define the table and INSERT INTO to add rows.
2
Define the loan period interval
Define a variable or use a fixed interval of 14 days named loan_period using PostgreSQL interval syntax.
PostgreSQL
Hint
Use \set loan_period '14 days'::interval in psql or assign interval '14 days' in a query.
3
Write a SELECT query to calculate due dates
Write a SELECT query that shows book_id, borrow_date, and a new column due_date which is borrow_date plus the interval interval '14 days'.
PostgreSQL
Hint
Use borrow_date + interval '14 days' to add days to the date.
4
Use the variable loan_period in the SELECT query
Modify the SELECT query to use the variable loan_period instead of the fixed interval interval '14 days' to calculate due_date.
PostgreSQL
Hint
Use :loan_period to refer to the variable in the query.
Practice
(1/5)
1. What does the following PostgreSQL expression do? SELECT CURRENT_DATE + INTERVAL '5 days';
easy
A. Returns the current date without change
B. Subtracts 5 days from the current date
C. Causes a syntax error
D. Adds 5 days to the current date
Solution
Step 1: Understand the CURRENT_DATE keyword
CURRENT_DATE returns today's date without time.
Step 2: Add interval of 5 days
Adding INTERVAL '5 days' increases the date by 5 days.
Final Answer:
Adds 5 days to the current date -> Option D
Quick Check:
Adding interval '5 days' = date + 5 days [OK]
Hint: Adding INTERVAL 'X days' shifts date forward by X days [OK]
Common Mistakes:
Confusing addition with subtraction
Thinking CURRENT_DATE includes time
Using wrong interval syntax
2. Which of the following is the correct syntax to subtract 3 months from a date column named order_date?
easy
A. order_date - '3 months'
B. order_date - INTERVAL '3 months'
C. order_date - INTERVAL 3 months
D. order_date - INTERVAL '3 month'
Solution
Step 1: Identify correct interval syntax
INTERVAL must be followed by a quoted string with number and unit, e.g., '3 months'.
Step 2: Check subtraction from date column
Subtracting INTERVAL '3 months' from order_date is valid syntax.
Final Answer:
order_date - INTERVAL '3 months' -> Option B
Quick Check:
Subtract INTERVAL '3 months' with quotes [OK]
Hint: Always quote interval value like '3 months' [OK]
Common Mistakes:
Omitting quotes around interval string
Using singular 'month' instead of plural 'months'
Trying to subtract string without INTERVAL keyword
3. What is the result of this query if today is 2024-06-15?
Hint: Add then subtract intervals stepwise for correct date [OK]
Common Mistakes:
Subtracting before adding
Confusing day and month units
Not casting to date and including time
4. Identify the error in this query:
SELECT CURRENT_DATE + INTERVAL 5 days;
medium
A. Missing quotes around interval value
B. CURRENT_DATE cannot be used with intervals
C. INTERVAL keyword is misspelled
D. Adding intervals to dates is not allowed
Solution
Step 1: Check INTERVAL syntax
INTERVAL requires the value to be a quoted string, e.g., '5 days'.
Step 2: Identify missing quotes error
The query lacks quotes around 5 days, causing syntax error.
Final Answer:
Missing quotes around interval value -> Option A
Quick Check:
INTERVAL '5 days' needs quotes [OK]
Hint: Always put interval value in single quotes [OK]
Common Mistakes:
Writing INTERVAL 5 days without quotes
Assuming CURRENT_DATE can't be used with intervals
Confusing INTERVAL keyword spelling
5. You want to find all orders from a table orders where the order_date is within the last 3 months from today. Which query correctly uses date arithmetic with intervals?
hard
A. SELECT * FROM orders WHERE order_date >= CURRENT_DATE - INTERVAL '3 months';
B. SELECT * FROM orders WHERE order_date <= CURRENT_DATE + INTERVAL '3 months';
C. SELECT * FROM orders WHERE order_date > CURRENT_DATE + INTERVAL '3 months';
D. SELECT * FROM orders WHERE order_date < CURRENT_DATE - INTERVAL '3 months';
Solution
Step 1: Understand the requirement
We want orders from the last 3 months, so order_date should be after (or equal to) 3 months ago.
Step 2: Use CURRENT_DATE minus 3 months
Subtracting INTERVAL '3 months' from CURRENT_DATE gives the date 3 months ago.
Step 3: Write condition for order_date
order_date >= CURRENT_DATE - INTERVAL '3 months' selects orders within last 3 months.
Final Answer:
SELECT * FROM orders WHERE order_date >= CURRENT_DATE - INTERVAL '3 months'; -> Option A
Quick Check:
Filter dates after CURRENT_DATE - 3 months [OK]
Hint: Use >= CURRENT_DATE - INTERVAL 'X months' for recent dates [OK]
Common Mistakes:
Using + INTERVAL instead of - INTERVAL
Using < instead of >= for filtering recent dates
Confusing direction of date comparison
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.