We use date, time, and timestamp types to store information about when things happen. This helps us keep track of events, appointments, or any time-related data.
Date, time, and timestamp types in PostgreSQL
DATE
TIME
TIMESTAMP
TIMESTAMP WITH TIME ZONEDATE stores only the date (year, month, day).
TIME stores only the time (hours, minutes, seconds).
TIMESTAMP stores both date and time without time zone.
TIMESTAMP WITH TIME ZONE stores date and time with time zone info.
CREATE TABLE events ( event_date DATE, event_time TIME, event_timestamp TIMESTAMP );
INSERT INTO events (event_date, event_time, event_timestamp) VALUES ('2024-06-01', '14:30:00', '2024-06-01 14:30:00');
SELECT event_date, event_time, event_timestamp FROM events;
This example creates a table for appointments with date, time, and timestamp columns. It inserts two appointments and then selects all rows ordered by their ID.
CREATE TABLE appointments ( id SERIAL PRIMARY KEY, appointment_date DATE, appointment_time TIME, appointment_timestamp TIMESTAMP ); INSERT INTO appointments (appointment_date, appointment_time, appointment_timestamp) VALUES ('2024-06-10', '09:00:00', '2024-06-10 09:00:00'), ('2024-06-11', '15:30:00', '2024-06-11 15:30:00'); SELECT * FROM appointments ORDER BY id;
When you only need the day, use DATE to save space and keep it simple.
TIMESTAMP does not store time zone info, so times are stored as-is.
Use TIMESTAMP WITH TIME ZONE if you need to handle different time zones correctly.
Date, time, and timestamp types help store when things happen.
Use DATE for just the day, TIME for just the time, and TIMESTAMP for both.
Choose TIMESTAMP WITH TIME ZONE if you need to track time zones.
Practice
Solution
Step 1: Understand the data types
DATEstores only the calendar date (year, month, day) without time.Step 2: Match the requirement
Since we want only the date without time,DATEis the correct choice.Final Answer:
DATE-> Option DQuick Check:
Date only =DATE[OK]
- Choosing TIMESTAMP which includes time
- Using TIME which stores only time
- Confusing INTERVAL with date storage
created_at that stores date and time with time zone in PostgreSQL?Solution
Step 1: Identify the correct type for date and time with time zone
PostgreSQL usesTIMESTAMP WITH TIME ZONEto store both date and time including time zone info.Step 2: Check the options
created_at TIMESTAMP WITH TIME ZONEmatches the correct syntax and type. The other options are either missing time zone or invalid.Final Answer:
created_at TIMESTAMP WITH TIME ZONE-> Option AQuick Check:
Date & time + time zone = TIMESTAMP WITH TIME ZONE [OK]
- Using TIMESTAMP without time zone when zone is needed
- Trying to add time zone to DATE or TIME types
- Incorrect syntax like DATE WITH TIME ZONE
events(event_time TIMESTAMP) and the query:SELECT event_time::DATE FROM events WHERE event_time > '2024-01-01 12:00:00';What will be the output type of the query?
Solution
Step 1: Understand the cast operation
The::DATEcasts theTIMESTAMPtoDATE, removing time part.Step 2: Analyze the query output
The SELECT returns only the date part ofevent_time, so output type isDATE.Final Answer:
DATE values -> Option CQuick Check:
CAST TIMESTAMP to DATE = DATE output [OK]
- Assuming output remains TIMESTAMP
- Thinking output is TIME only
- Confusing cast with string conversion
SELECT event_time + '1 day' FROM events;But it gives an error. What is the likely cause?
Solution
Step 1: Understand adding intervals to timestamps
In PostgreSQL, you add intervals to timestamps, but the interval must be of type INTERVAL.Step 2: Identify the error cause
The string '1 day' is text and must be cast to INTERVAL using'1 day'::INTERVALorINTERVAL '1 day'.Final Answer:
The string '1 day' must be cast to INTERVAL before adding -> Option AQuick Check:
Add INTERVAL to TIMESTAMP, cast string first [OK]
- Adding string directly without casting
- Assuming TIMESTAMP + string works
- Using DATE type incorrectly
Solution
Step 1: Choose the correct storage type
TIMESTAMP WITH TIME ZONEstores the exact moment in time with zone info, ideal for UTC storage.Step 2: Use conversion function
AT TIME ZONEconverts stored UTC times to users' local time zones for display.Final Answer:
Store as TIMESTAMP WITH TIME ZONE and use AT TIME ZONE to convert -> Option BQuick Check:
Use TIMESTAMP WITH TIME ZONE + AT TIME ZONE for zone conversion [OK]
- Storing as TIMESTAMP without time zone loses zone info
- Using DATE or TIME types which lack full timestamp info
- Confusing SET TIMEZONE session setting with conversion
Ready to prove it?
Pass the test and this pattern moves unknown
