Bird
Raised Fist0
PostgreSQLquery~20 mins

EXTRACT function for date parts in PostgreSQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
EXTRACT Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
1:30remaining
Extracting the year from a timestamp
What is the output of this query?
SELECT EXTRACT(YEAR FROM TIMESTAMP '2023-11-15 08:30:00');
PostgreSQL
SELECT EXTRACT(YEAR FROM TIMESTAMP '2023-11-15 08:30:00');
A15
B11
C08
D2023
Attempts:
2 left
💡 Hint
EXTRACT gets a specific part of the date/time, like year, month, or day.
❓ query_result
intermediate
1:30remaining
Extracting the month from a date
What does this query return?
SELECT EXTRACT(MONTH FROM DATE '2024-02-29');
PostgreSQL
SELECT EXTRACT(MONTH FROM DATE '2024-02-29');
A29
B2
C2024
D0
Attempts:
2 left
💡 Hint
MONTH extracts the month number from the date.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in EXTRACT usage
Which option contains a syntax error when using EXTRACT in PostgreSQL?
ASELECT EXTRACT(HOUR, TIMESTAMP '2023-05-10 12:00:00');
BSELECT EXTRACT(DAY FROM TIMESTAMP '2023-05-10 12:00:00');
CSELECT EXTRACT(MINUTE FROM TIMESTAMP '2023-05-10 12:00:00');
DSELECT EXTRACT(SECOND FROM TIMESTAMP '2023-05-10 12:00:00');
Attempts:
2 left
💡 Hint
Check the syntax: EXTRACT expects the part and source separated by FROM.
❓ query_result
advanced
1:30remaining
Extracting fractional seconds from a timestamp
What is the output of this query?
SELECT EXTRACT(SECOND FROM TIMESTAMP '2023-07-20 14:23:45.678');
PostgreSQL
SELECT EXTRACT(SECOND FROM TIMESTAMP '2023-07-20 14:23:45.678');
A0.678
B678
C45.678
D45
Attempts:
2 left
💡 Hint
EXTRACT(SECOND) returns seconds including fractional part.
🧠 Conceptual
expert
2:30remaining
Understanding EXTRACT with time zone aware timestamps
Given the timestamp with time zone '2023-12-31 23:00:00+02', what does this query return?
SELECT EXTRACT(HOUR FROM TIMESTAMPTZ '2023-12-31 23:00:00+02');
PostgreSQL
SELECT EXTRACT(HOUR FROM TIMESTAMPTZ '2023-12-31 23:00:00+02');
A23
B21
C1
D0
Attempts:
2 left
💡 Hint
EXTRACT returns the hour part in the local time of the timestamp, ignoring time zone offset.

Practice

(1/5)
1. What does the EXTRACT function do in PostgreSQL when used with a date or timestamp?
easy
A. It adds days to the date.
B. It changes the date format to a string.
C. It retrieves a specific part like year, month, or day from the date or timestamp.
D. It deletes the time part from the timestamp.

Solution

  1. Step 1: Understand the purpose of EXTRACT

    The EXTRACT function is designed to pull out specific parts such as year, month, day, hour, etc., from a date or timestamp value.
  2. Step 2: Compare with other options

    Options B, C, and D describe different operations like formatting, adding days, or truncating time, which EXTRACT does not do.
  3. Final Answer:

    It retrieves a specific part like year, month, or day from the date or timestamp. -> Option C
  4. Quick Check:

    EXTRACT returns date parts = A [OK]
Hint: EXTRACT pulls out parts like year or month from dates [OK]
Common Mistakes:
  • Thinking EXTRACT changes date format
  • Confusing EXTRACT with date arithmetic
  • Assuming EXTRACT removes time part
2. Which of the following is the correct syntax to extract the month from a timestamp column named created_at?
easy
A. EXTRACT(created_at, MONTH);
B. EXTRACT(MONTH FROM created_at);
C. EXTRACT('MONTH', created_at);
D. EXTRACT MONTH created_at;

Solution

  1. Step 1: Recall correct EXTRACT syntax

    The correct syntax is EXTRACT(part FROM source), so to get month: EXTRACT(MONTH FROM created_at);
  2. Step 2: Identify incorrect syntax forms

    Options A, B, and D use wrong argument order, quotes around part name, missing FROM keyword, or wrong punctuation.
  3. Final Answer:

    EXTRACT(MONTH FROM created_at); -> Option B
  4. Quick Check:

    EXTRACT(part FROM source) = C [OK]
Hint: Use EXTRACT(part FROM source) syntax exactly [OK]
Common Mistakes:
  • Omitting FROM keyword
  • Using quotes around part name
  • Swapping argument order
3. Given the query:
SELECT EXTRACT(DAY FROM TIMESTAMP '2024-06-15 10:30:00');

What will be the output?
medium
A. 10
B. 6
C. 2024
D. 15

Solution

  1. Step 1: Identify the part extracted

    The query extracts the DAY part from the timestamp '2024-06-15 10:30:00'. The day is 15.
  2. Step 2: Confirm output value

    Other options represent month (6), year (2024), and hour (10), which are not extracted here.
  3. Final Answer:

    15 -> Option D
  4. Quick Check:

    EXTRACT(DAY) = 15 [OK]
Hint: Match EXTRACT part with date component value [OK]
Common Mistakes:
  • Confusing day with month or year
  • Expecting full date output
  • Ignoring time part in timestamp
4. What is wrong with this query?
SELECT EXTRACT('YEAR' FROM CURRENT_DATE);
medium
A. The part name YEAR should not be in quotes.
B. CURRENT_DATE cannot be used with EXTRACT.
C. Missing parentheses around CURRENT_DATE.
D. EXTRACT requires two arguments separated by a comma.

Solution

  1. Step 1: Check syntax for EXTRACT part

    The part name like YEAR should be unquoted. Quotes cause syntax error.
  2. Step 2: Verify other parts of query

    CURRENT_DATE is valid input, no parentheses needed, and EXTRACT uses FROM keyword, not comma.
  3. Final Answer:

    The part name YEAR should not be in quotes. -> Option A
  4. Quick Check:

    Part names unquoted in EXTRACT [OK]
Hint: Do not put quotes around date parts in EXTRACT [OK]
Common Mistakes:
  • Using quotes around part names
  • Adding commas instead of FROM
  • Thinking CURRENT_DATE needs parentheses
5. You want to find all records from a table orders where the order was placed in the first quarter (January to March) of any year. Which query correctly uses EXTRACT to filter these records?
hard
A. SELECT * FROM orders WHERE EXTRACT(QUARTER FROM order_date) = 1;
B. SELECT * FROM orders WHERE EXTRACT('MONTH' FROM order_date) < 4;
C. SELECT * FROM orders WHERE EXTRACT(MONTH, order_date) IN (1, 2, 3);
D. SELECT * FROM orders WHERE EXTRACT(MONTH order_date) BETWEEN 1 AND 3;

Solution

  1. Step 1: Understand quarter extraction

    PostgreSQL supports EXTRACT(QUARTER FROM date) which returns 1 for Jan-Mar, 2 for Apr-Jun, etc.
  2. Step 2: Evaluate each option

    Options A (missing FROM), B (quotes around MONTH), and C (comma instead of FROM) have syntax errors. SELECT * FROM orders WHERE EXTRACT(QUARTER FROM order_date) = 1; correctly uses EXTRACT(QUARTER FROM order_date) = 1.
  3. Final Answer:

    SELECT * FROM orders WHERE EXTRACT(QUARTER FROM order_date) = 1; -> Option A
  4. Quick Check:

    Use EXTRACT(QUARTER) = 1 for first quarter [OK]
Hint: Use EXTRACT(QUARTER) = 1 for first quarter filtering [OK]
Common Mistakes:
  • Missing FROM keyword
  • Using quotes around part names
  • Using comma instead of FROM
  • Not knowing EXTRACT supports QUARTER
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