Bird
Raised Fist0
MySQLquery~5 mins

STR_TO_DATE parsing in MySQL

Choose your learning style10 modes available
Introduction
STR_TO_DATE helps convert text into date or time values so you can work with them easily in your database.
You have dates stored as text and want to sort or filter by date.
You receive date information in different formats and need to standardize it.
You want to compare or calculate with dates that are currently strings.
You import data from files where dates are not in date format.
You want to extract parts of a date from a text string.
Syntax
MySQL
STR_TO_DATE(string, format)
The string is the text you want to convert to a date or time.
The format tells MySQL how the date or time is written in the string.
Examples
Converts '2024-06-15' text to a date using year-month-day format.
MySQL
STR_TO_DATE('2024-06-15', '%Y-%m-%d')
Converts '15/06/2024' text to a date using day/month/year format.
MySQL
STR_TO_DATE('15/06/2024', '%d/%m/%Y')
Converts '06:30:00' text to a time using hours:minutes:seconds format.
MySQL
STR_TO_DATE('06:30:00', '%H:%i:%s')
Converts 'June 15, 2024' text to a date using full month name, day, and year.
MySQL
STR_TO_DATE('June 15, 2024', '%M %d, %Y')
Sample Program
This query converts the text '31-12-2023 23:59:59' into a datetime value using day-month-year and time format.
MySQL
SELECT STR_TO_DATE('31-12-2023 23:59:59', '%d-%m-%Y %H:%i:%s') AS parsed_datetime;
OutputSuccess
Important Notes
Make sure the format matches exactly how the date/time is written in the string.
If the string does not match the format, STR_TO_DATE returns NULL.
Common format codes: %Y = 4-digit year, %m = month number, %d = day, %H = hour (24h), %i = minutes, %s = seconds.
Summary
STR_TO_DATE converts text to date/time using a format string.
Use it to work with dates stored as text in your database.
Always match the format to your text to avoid errors.

Practice

(1/5)
1. What does the MySQL function STR_TO_DATE('2024-06-15', '%Y-%m-%d') do?
easy
A. Throws an error because the format string is incorrect.
B. Converts the string into a number representing the date.
C. Converts the string '2024-06-15' into a date value using the format year-month-day.
D. Returns the string unchanged because STR_TO_DATE only works with time values.

Solution

  1. Step 1: Understand STR_TO_DATE purpose

    STR_TO_DATE converts a text string into a date or datetime value based on the given format.
  2. Step 2: Match the string and format

    The string '2024-06-15' matches the format '%Y-%m-%d' which means year-month-day.
  3. Final Answer:

    Converts the string '2024-06-15' into a date value using the format year-month-day. -> Option C
  4. Quick Check:

    STR_TO_DATE('2024-06-15', '%Y-%m-%d') = date value [OK]
Hint: Match format exactly to string parts for correct conversion [OK]
Common Mistakes:
  • Confusing format specifiers like %m and %d
  • Expecting STR_TO_DATE to return a string
  • Using wrong format causing NULL result
2. Which of the following is the correct syntax to convert the string '15/06/2024' to a date using STR_TO_DATE in MySQL?
easy
A. STR_TO_DATE('15/06/2024', '%Y/%m/%d')
B. STR_TO_DATE('15/06/2024', '%d-%m-%Y')
C. STR_TO_DATE('15/06/2024', '%m/%d/%Y')
D. STR_TO_DATE('15/06/2024', '%d/%m/%Y')

Solution

  1. Step 1: Identify the date format in the string

    The string uses slashes '/' and the order is day/month/year.
  2. Step 2: Choose matching format specifiers

    Use '%d/%m/%Y' to match day/month/year with slashes.
  3. Final Answer:

    STR_TO_DATE('15/06/2024', '%d/%m/%Y') -> Option D
  4. Quick Check:

    Format matches string separators and order [OK]
Hint: Match separators and order exactly in format string [OK]
Common Mistakes:
  • Using wrong separators like '-' instead of '/'
  • Swapping month and day positions
  • Using uppercase %M instead of %m
3. What is the result of this query?
SELECT STR_TO_DATE('07-24-2024 14:30:00', '%m-%d-%Y %H:%i:%s');
medium
A. 2024-07-24 14:30:00
B. 24-07-2024 14:30:00
C. NULL
D. 2024-24-07 14:30:00

Solution

  1. Step 1: Analyze the input string and format

    The string is '07-24-2024 14:30:00' which is month-day-year hour:minute:second.
  2. Step 2: Confirm format matches string

    The format '%m-%d-%Y %H:%i:%s' matches month-day-year and time correctly.
  3. Final Answer:

    2024-07-24 14:30:00 -> Option A
  4. Quick Check:

    STR_TO_DATE parses string to datetime correctly [OK]
Hint: Check order of date parts and time specifiers carefully [OK]
Common Mistakes:
  • Confusing day and month order
  • Using %M instead of %m for month number
  • Expecting string output instead of date/datetime
4. Identify the error in this query:
SELECT STR_TO_DATE('2024/06/15', '%Y-%m-%d');
medium
A. The format string uses dashes but the date string uses slashes.
B. The year format specifier %Y is incorrect.
C. STR_TO_DATE cannot parse dates with slashes.
D. The function requires a time part to work.

Solution

  1. Step 1: Compare date string and format separators

    The string uses '/' but the format uses '-' as separators.
  2. Step 2: Understand impact of mismatched separators

    STR_TO_DATE expects exact match; mismatch causes NULL or error.
  3. Final Answer:

    The format string uses dashes but the date string uses slashes. -> Option A
  4. Quick Check:

    Separators must match exactly [OK]
Hint: Check separators in string and format carefully [OK]
Common Mistakes:
  • Ignoring separator mismatch
  • Thinking %Y is wrong for year
  • Assuming time part is mandatory
5. You have a table with a column event_date storing dates as strings like '15-June-2024'. Which STR_TO_DATE format correctly converts this to a date?
hard
A. STR_TO_DATE(event_date, '%d-%m-%Y')
B. STR_TO_DATE(event_date, '%d-%M-%Y')
C. STR_TO_DATE(event_date, '%Y-%m-%d')
D. STR_TO_DATE(event_date, '%M-%d-%Y')

Solution

  1. Step 1: Analyze the string format

    The string is '15-June-2024' with day, full month name, and year separated by dashes.
  2. Step 2: Match format specifiers

    %d = day number, %M = full month name, %Y = 4-digit year, with dashes as separators.
  3. Final Answer:

    STR_TO_DATE(event_date, '%d-%M-%Y') -> Option B
  4. Quick Check:

    Use %M for full month name, not %m [OK]
Hint: Use %M for full month names, %m for numbers [OK]
Common Mistakes:
  • Using %m for month name instead of number
  • Swapping day and month positions
  • Ignoring separator characters
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