Skip to content

STR_TO_DATE()

函数说明

STR_TO_DATE() 函数按照指定日期或时间显示格式,将字符串转换为日期或日期时间类型,与 TO_DATE() 同义。

格式字符串可以包含文字字符和以%开头的格式说明符。format 中的字面字符与格式说明符必须与 str 匹配,支持表达式。如果不能按照 format 解析 str 或者其中任何一个参数为 NULL,STR_TO_DATE 函数将返回 NULL。

有关可以使用的格式说明符,请参阅 DATE_FORMAT() 函数描述。

函数语法

> STR_TO_DATE(str,format)

参数释义

参数 说明
str 要格式化为日期的字符串 (输入字符串)
format 要使用的格式字符串

示例

mysql> SELECT STR_TO_DATE('2022-01-06 10:20:30','%Y-%m-%d %H:%i:%s') as result;
+---------------------+
| result              |
+---------------------+
| 2022-01-06 10:20:30 |
+---------------------+
1 row in set (0.00 sec) 

mysql> SELECT STR_TO_DATE('09:30:17','%h:%i:%s');
+---------------------------------+
| str_to_date(09:30:17, %h:%i:%s) |
+---------------------------------+
| 09:30:17                        |
+---------------------------------+
1 row in set (0.00 sec)

-- format 参数支持表达式
mysql> SELECT str_to_date('2008-01-01',replace('yyyy-MM-dd','yyyy-MM-dd','%Y-%m-%d')) as result;
+------------+
| result     |
+------------+
| 2008-01-01 |
+------------+
1 row in set (0.00 sec)

--STR_TO_DATE 函数在根据格式字符串 format 解析输入字符串 str 时,忽略输入字符串 str 末尾的额外字符
mysql> SELECT STR_TO_DATE('25,5,2022 extra characters','%d,%m,%Y'); 
+---------------------------------------------------+
| str_to_date(25,5,2022 extra characters, %d,%m,%Y) |
+---------------------------------------------------+
| 2022-05-25                                        |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT STR_TO_DATE('2022','%Y');
+-----------------------+
| str_to_date(2022, %Y) |
+-----------------------+
| NULL                  |
+-----------------------