These functions help you get the current date and time from the database server. This is useful when you want to know when something happened or to track time.
You want to record the date when a user signs up.
You need to find out the current time to log an event.
You want to filter records created today.
You want to compare dates to check if a deadline has passed.
Syntax
PostgreSQL
CURRENT_DATE
CURRENT_TIMESTAMP
NOW()
CURRENT_DATE returns only the current date (year-month-day).
CURRENT_TIMESTAMP and NOW() return the current date and time (timestamp with time zone).
Examples
Returns the current date without time.
PostgreSQL
SELECT CURRENT_DATE;
Returns the current date and time.
PostgreSQL
SELECT CURRENT_TIMESTAMP;
Also returns the current date and time, same as CURRENT_TIMESTAMP.
PostgreSQL
SELECT NOW();
Sample Program
This query shows all three functions together so you can see their outputs side by side.
PostgreSQL
SELECT CURRENT_DATE AS today, CURRENT_TIMESTAMP AS now_timestamp, NOW() AS now_function;
OutputSuccess
Important Notes
The exact time shown depends on when you run the query.
Use CURRENT_DATE when you only need the date without time.
NOW() and CURRENT_TIMESTAMP are interchangeable in PostgreSQL.
Summary
CURRENT_DATE gives you just the date.
CURRENT_TIMESTAMP and NOW() give you date and time.
These functions are useful for tracking and comparing dates and times.
Practice
(1/5)
1. Which PostgreSQL function returns only the current date without the time component?
easy
A. CURRENT_DATE
B. CURRENT_TIMESTAMP
C. NOW()
D. DATE_PART()
Solution
Step 1: Understand the function outputs
CURRENT_DATE returns only the date part (year-month-day) without time.
Step 2: Compare with other functions
CURRENT_TIMESTAMP and NOW() return both date and time, while DATE_PART() extracts parts but is not a current date function.
Final Answer:
CURRENT_DATE -> Option A
Quick Check:
Only date, no time = CURRENT_DATE [OK]
Hint: Only date? Use CURRENT_DATE [OK]
Common Mistakes:
Confusing CURRENT_TIMESTAMP with CURRENT_DATE
Using NOW() when only date is needed
Thinking DATE_PART() returns current date
2. Which of the following is the correct syntax to get the current timestamp in PostgreSQL?
easy
A. SELECT CURRENT_DATE();
B. SELECT CURRENT_TIMESTAMP;
C. SELECT CURRENT_TIME();
D. SELECT NOW;
Solution
Step 1: Check function syntax
CURRENT_TIMESTAMP is a special function and does not require parentheses.
Step 2: Validate other options
SELECT CURRENT_DATE(); uses parentheses incorrectly with CURRENT_DATE. SELECT CURRENT_TIME(); returns only the time part (time type), not full timestamp. SELECT NOW; misses required parentheses for NOW(). SELECT CURRENT_TIMESTAMP; is the correct and preferred standard syntax.
Final Answer:
SELECT CURRENT_TIMESTAMP; -> Option B
Quick Check:
Standard timestamp function = CURRENT_TIMESTAMP [OK]
Hint: CURRENT_TIMESTAMP has no parentheses [OK]
Common Mistakes:
Adding parentheses to CURRENT_DATE
Omitting parentheses for NOW()
Confusing function syntax
3. What will be the output type of the following query? SELECT CURRENT_DATE, CURRENT_TIMESTAMP, NOW();
medium
A. Error due to mixing functions
B. Three columns: date, date, date
C. Three columns: timestamp without time zone, timestamp without time zone, timestamp without time zone
D. Three columns: date, timestamp with time zone, timestamp with time zone
Solution
Step 1: Identify each function's return type
CURRENT_DATE returns a date type (no time). CURRENT_TIMESTAMP and NOW() return timestamp with time zone.
Step 2: Confirm output columns
The query returns three columns: one date and two timestamps with time zone.
Final Answer:
Three columns: date, timestamp with time zone, timestamp with time zone -> Option D
Quick Check:
Types: date, timestamptz, timestamptz = Three columns: date, timestamp with time zone, timestamp with time zone [OK]
Hint: CURRENT_DATE = date; others = timestamp with time zone [OK]
Common Mistakes:
Assuming all return date only
Thinking NOW() returns date
Expecting syntax error
4. You wrote this query but it gives an error: SELECT CURRENT_DATE(); What is the problem?
medium
A. You must cast CURRENT_DATE to text
B. CURRENT_DATE requires a parameter inside parentheses
C. CURRENT_DATE is not a function and should not have parentheses
D. CURRENT_DATE is deprecated and replaced by NOW()
Solution
Step 1: Check function usage
CURRENT_DATE is a special keyword, not a function, so it does not accept parentheses.
Step 2: Understand error cause
Using parentheses causes syntax error because PostgreSQL expects no parentheses for CURRENT_DATE.
Final Answer:
CURRENT_DATE is not a function and should not have parentheses -> Option C
Quick Check:
No parentheses with CURRENT_DATE [OK]
Hint: No parentheses with CURRENT_DATE [OK]
Common Mistakes:
Adding () to CURRENT_DATE
Thinking CURRENT_DATE needs parameters
Confusing with NOW() syntax
5. You want to insert the current date and time into a table with columns created_date DATE and created_time TIMESTAMP. Which INSERT statement is correct?
hard
A. INSERT INTO table_name (created_date, created_time) VALUES (CURRENT_DATE, NOW());
B. INSERT INTO table_name (created_date, created_time) VALUES (NOW(), CURRENT_DATE);
C. INSERT INTO table_name (created_date, created_time) VALUES (CURRENT_TIMESTAMP, CURRENT_DATE);
D. INSERT INTO table_name (created_date, created_time) VALUES (CURRENT_DATE(), CURRENT_TIMESTAMP());
Solution
Step 1: Match data types with values
created_date is DATE type, so CURRENT_DATE fits. created_time is TIMESTAMP, so NOW() fits.
Step 2: Check syntax correctness
INSERT INTO table_name (created_date, created_time) VALUES (CURRENT_DATE, NOW()); uses correct functions and order. INSERT INTO table_name (created_date, created_time) VALUES (NOW(), CURRENT_DATE); swaps types incorrectly. INSERT INTO table_name (created_date, created_time) VALUES (CURRENT_TIMESTAMP, CURRENT_DATE); uses timestamp for date column (wrong type). INSERT INTO table_name (created_date, created_time) VALUES (CURRENT_DATE(), CURRENT_TIMESTAMP()); uses parentheses incorrectly with CURRENT_DATE and CURRENT_TIMESTAMP.
Final Answer:
INSERT INTO table_name (created_date, created_time) VALUES (CURRENT_DATE, NOW()); -> Option A
Quick Check:
Date = CURRENT_DATE, Timestamp = NOW() [OK]
Hint: Match DATE with CURRENT_DATE, TIMESTAMP with NOW() [OK]
Common Mistakes:
Swapping date and timestamp values
Using parentheses with CURRENT_DATE
Using CURRENT_TIMESTAMP for DATE column
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.