Bird
Raised Fist0
MySQLquery~10 mins

NOW, CURDATE, CURTIME in MySQL - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - NOW, CURDATE, CURTIME
Call NOW()
→Return current date and time
↓
Call CURDATE()
→Return current date only
↓
Call CURTIME()
→Return current time only
↓
Use results in query or display
Each function fetches the current date/time from the system: NOW() gives date and time, CURDATE() gives only date, CURTIME() gives only time.
Execution Sample
MySQL
SELECT NOW() AS current_datetime,
       CURDATE() AS current_date,
       CURTIME() AS current_time;
This query returns the current date and time, current date only, and current time only.
Execution Table
StepFunction CalledReturned ValueExplanation
1NOW()2024-06-15 14:23:45Returns full current date and time
2CURDATE()2024-06-15Returns only the current date
3CURTIME()14:23:45Returns only the current time
4Query Result{"current_datetime":"2024-06-15 14:23:45","current_date":"2024-06-15","current_time":"14:23:45"}Final output row with all three values
💡 All functions return current system date/time values at query execution time
Variable Tracker
VariableStartAfter NOW()After CURDATE()After CURTIME()Final
current_datetimeNULL2024-06-15 14:23:452024-06-15 14:23:452024-06-15 14:23:452024-06-15 14:23:45
current_dateNULLNULL2024-06-152024-06-152024-06-15
current_timeNULLNULLNULL14:23:4514:23:45
Key Moments - 3 Insights
Why does NOW() return both date and time, but CURDATE() only returns the date?
NOW() returns the full timestamp including date and time as shown in execution_table row 1, while CURDATE() extracts only the date part as shown in row 2.
If I run the query at different times, will the results change?
Yes, because these functions fetch the current system date/time at the moment of query execution, so values update each time you run the query (see exit_note).
Can CURTIME() return a date value?
No, CURTIME() returns only the time portion as shown in execution_table row 3, it never returns a date.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what does CURDATE() return at step 2?
ACurrent time only
BCurrent date only
CCurrent date and time
DNULL
💡 Hint
Check execution_table row 2 under Returned Value
At which step does the function return only the time portion?
AStep 3
BStep 2
CStep 1
DStep 4
💡 Hint
Look at execution_table row 3 for CURTIME() output
If you want both date and time in your query result, which function should you use?
ACURDATE()
BCURTIME()
CNOW()
DNone of these
💡 Hint
Refer to execution_table row 1 for NOW() output
Concept Snapshot
NOW() returns current date and time.
CURDATE() returns current date only.
CURTIME() returns current time only.
All fetch system time at query execution.
Use them to get current timestamps in queries.
Full Transcript
This lesson shows how MySQL functions NOW(), CURDATE(), and CURTIME() work. NOW() returns the full current date and time, CURDATE() returns only the date, and CURTIME() returns only the time. Each function gets the current system date/time when the query runs. The example query selects all three values. The execution table shows each function call and its returned value. Variables track how each value is assigned step-by-step. Key moments clarify common confusions like why NOW() returns both date and time but CURDATE() does not. The quiz tests understanding by asking about specific steps and outputs. This helps beginners see exactly what each function returns and when.

Practice

(1/5)
1. What does the MySQL function NOW() return?
easy
A. Only the current date
B. The current date and time
C. Only the current time
D. The current year

Solution

  1. Step 1: Understand the function purpose

    NOW() is designed to return both date and time together.
  2. Step 2: Compare with other functions

    CURDATE() returns only date, CURTIME() returns only time, so NOW() returns both.
  3. Final Answer:

    The current date and time -> Option B
  4. Quick Check:

    NOW() = current date + time [OK]
Hint: NOW() gives date and time together [OK]
Common Mistakes:
  • Confusing NOW() with CURDATE()
  • Thinking NOW() returns only time
  • Assuming NOW() returns only year
2. Which of the following is the correct syntax to get only the current date in MySQL?
easy
A. SELECT CURDATE();
B. SELECT NOW();
C. SELECT CURRENT_TIME();
D. SELECT CURTIME();

Solution

  1. Step 1: Identify function for current date

    CURDATE() returns only the current date in MySQL.
  2. Step 2: Check other options

    NOW() returns date and time, CURRENT_TIME() and CURTIME() return only time.
  3. Final Answer:

    SELECT CURDATE(); -> Option A
  4. Quick Check:

    CURDATE() = current date only [OK]
Hint: Use CURDATE() for date only [OK]
Common Mistakes:
  • Using NOW() when only date is needed
  • Confusing CURTIME() with CURDATE()
  • Using CURRENT_TIME() for date
3. What will be the output of this query if run at exactly 2024-06-15 14:30:45?
SELECT NOW(), CURDATE(), CURTIME();
medium
A. '2024-06-15 00:00:00', '14:30:45', '2024-06-15'
B. '2024-06-15', '14:30:45', '2024-06-15 14:30:45'
C. '14:30:45', '2024-06-15 14:30:45', '2024-06-15'
D. '2024-06-15 14:30:45', '2024-06-15', '14:30:45'

Solution

  1. Step 1: Understand each function output

    NOW() returns full date and time, CURDATE() returns date only, CURTIME() returns time only.
  2. Step 2: Match given time values

    At 2024-06-15 14:30:45, NOW() = '2024-06-15 14:30:45', CURDATE() = '2024-06-15', CURTIME() = '14:30:45'.
  3. Final Answer:

    '2024-06-15 14:30:45', '2024-06-15', '14:30:45' -> Option D
  4. Quick Check:

    NOW() = full datetime, CURDATE() = date, CURTIME() = time [OK]
Hint: NOW() full, CURDATE() date, CURTIME() time [OK]
Common Mistakes:
  • Mixing order of outputs
  • Assuming CURTIME() returns date
  • Confusing NOW() with CURDATE()
4. Identify the error in this query:
SELECT NOW, CURDATE(), CURTIME();
medium
A. NOW is missing parentheses
B. CURDATE() should be CURTIME()
C. CURTIME() is misspelled
D. No error, query is correct

Solution

  1. Step 1: Check function syntax

    MySQL functions require parentheses even if no arguments are passed. NOW without () is invalid.
  2. Step 2: Verify other functions

    CURDATE() and CURTIME() have correct syntax with parentheses.
  3. Final Answer:

    NOW is missing parentheses -> Option A
  4. Quick Check:

    Functions need () even if empty [OK]
Hint: Always use () with MySQL functions [OK]
Common Mistakes:
  • Omitting parentheses for functions
  • Assuming functions can be called without ()
  • Thinking CURDATE() is incorrect
5. You want to insert the current date and time into a table's created_at column. Which query correctly uses MySQL functions to do this?
hard
A. INSERT INTO logs (created_at) VALUES (CURDATE());
B. INSERT INTO logs (created_at) VALUES (CURTIME());
C. INSERT INTO logs (created_at) VALUES (NOW());
D. INSERT INTO logs (created_at) VALUES ('CURDATE()');

Solution

  1. Step 1: Understand the column data type

    created_at usually stores full date and time, so we need a function that returns both.
  2. Step 2: Choose correct function

    NOW() returns current date and time, CURDATE() returns only date, CURTIME() only time, and quoting function names inserts strings, not values.
  3. Final Answer:

    INSERT INTO logs (created_at) VALUES (NOW()); -> Option C
  4. Quick Check:

    Use NOW() for full datetime insert [OK]
Hint: Use NOW() to insert full date and time [OK]
Common Mistakes:
  • Using CURDATE() when time is needed
  • Using CURTIME() when date is needed
  • Inserting function name as string
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