Home >Database >Mysql Tutorial >How to perform time conversion in MySQL
MySQL supports different types such as DATETIME, TIMESTAMP, DATE, and TIME to represent time. The time these types store in MySQL is UTC time.
Use the STR_TO_DATE() function in MySQL to convert a time string into a time type. The syntax of this function is as follows:
STR_TO_DATE(str, format)
Among them, str represents the string to be converted, and format represents the format of the date and time in the string. For example:
SELECT STR_TO_DATE('2019-08-14 21:12:23', '%Y-%m-%d %H:%i:%s');
This SQL statement will return a DATETIME type time, indicating 21:12:23 on August 14, 2019.
When using the STR_TO_DATE() function, you need to pay attention to the following points:
In the format string, the identifier (for example, Y, m, d, H , i, s, etc.) are different in their case. Uppercase means strict matching, lowercase means loose matching. For example, %m represents the numeric month, which can accept formats such as 01 and 1; and %M represents the English month, which requires exact matching.
The delimiter used in the format string must be the same as the delimiter used in the actual string. If "-" is used as the date separator in the actual string, the format string must also use "-" as the separator.
Strict mode: When the format string cannot match the actual string, if strict mode is used (such as setting sql_mode to STRICT_ALL_TABLES in the MySQL configuration file), it will be returned Error; if strict mode is not used, NULL is returned.
In addition to the STR_TO_DATE() function, you can also use the UNIX_TIMESTAMP() function to convert a string type time to a UNIX timestamp. A UNIX timestamp is an integer that represents the number of seconds that have elapsed since 00:00:00 on January 1, 1970, which is the current time. For example:
SELECT UNIX_TIMESTAMP('2019-08-14 21:12:23');
This SQL statement will return an integer representing the UNIX timestamp of 21:12:23 on August 14, 2019.
Because the time types in UNIX timestamp and MySQL are based on UTC time, they can be compared and calculated directly. For example, you can use UNIX_TIMESTAMP() to convert the time type to a UNIX timestamp, and then subtract them to get the time difference between the two times. For example:
SELECT UNIX_TIMESTAMP('2019-08-14 21:12:23') - UNIX_TIMESTAMP('2019-08-14 21:12:21');
This SQL statement will return an integer, representing the time difference between 21:12:23 on August 14, 2019 and 21:12:21 on August 14, 2019. That is 2 seconds.
In addition to converting string type time to time type, you can also use the DATE_FORMAT() function to convert time type to string type. The syntax of this function is as follows:
DATE_FORMAT(date, format)
Among them, date is the time to be converted, and format is the returned string format. For example:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
This SQL statement will return the string representation of the current time in the format of "YYYY-MM-DD HH:MI:SS".
The above is the detailed content of How to perform time conversion in MySQL. For more information, please follow other related articles on the PHP Chinese website!