摘要:在本教程中,我们将向您展示如何使用MySQL STR_TO_DATE()函数将字符串转换为日期时间值。
MySQL STR_TO_DATE函数简介
下面说明了STR_TO_DATE()
函数的语法:
STR_TO_DATE(str,fmt);
Code language: SQL (Structured Query Language) (sql)
STR_TO_DATE()
根据fmt
格式字符串将str
字符串转换为日期值。 STR_TO_DATE()
函数可以根据输入和格式字符串返回DATE
、 TIME,
或DATETIME
值。如果输入字符串非法, STR_TO_DATE()
函数将返回NULL.
STR_TO_DATE()
函数扫描输入字符串以匹配格式字符串。格式字符串可以包含文字字符和以百分比 (%) 字符开头的格式说明符。查看DATE_FORMAT 函数以获取格式说明符列表。
STR_TO_DATE()
函数在涉及将时态数据从外部格式转换为 MySQL 时态数据格式的数据迁移中非常有用。
MySQL STR_TO_DATE 示例
让我们看一些使用STR_TO_DATE()
函数将字符串转换为日期和/或时间值的示例
以下语句将字符串转换为DATE
值。
SELECT STR_TO_DATE('21,5,2013','%d,%m,%Y');
Code language: SQL (Structured Query Language) (sql)
基于格式字符串“%d、%m、%Y”, STR_TO_DATE()
函数扫描“21,5,2013”输入字符串。
- 首先,它尝试在输入字符串中查找
%d
格式说明符(即一个月中的某一天 (01…31))的匹配项。由于数字 21 与%d
说明符匹配,因此该函数将 21 作为日期值。 - 其次,由于格式字符串中的逗号 (,) 文字字符与输入字符串中的逗号匹配,因此该函数继续检查第二个格式说明符
%m
,即月份 (01…12),并发现数字5 与%m
格式说明符匹配。它采用数字 5 作为月份值。 - 第三,在匹配第二个逗号 (,) 后,
STR_TO_DATE()
函数不断查找第三个格式说明符%Y
的匹配项,即四位数年份,例如 2012,2013 等,并将数字 2013 作为年份值。
STR_TO_DATE()
函数在根据格式字符串解析输入字符串时会忽略输入字符串末尾的额外字符。请参见以下示例:
SELECT STR_TO_DATE('21,5,2013 extra characters','%d,%m,%Y');
Code language: SQL (Structured Query Language) (sql)
STR_TO_DATE()
将输入字符串未提供的所有不完整日期值设置为零。请参见以下示例:
SELECT STR_TO_DATE('2013','%Y');
Code language: SQL (Structured Query Language) (sql)
由于输入字符串仅提供年份值,因此STR_TO_DATE()
函数返回月份和日期设置为零的日期值。
以下示例将时间字符串转换为TIME
值:
SELECT STR_TO_DATE('113005','%h%i%s');
Code language: SQL (Structured Query Language) (sql)
与未指定的日期部分类似, STR_TO_DATE()
函数将未指定的时间部分设置为零,请参见以下示例:
SELECT STR_TO_DATE('11','%h');
Code language: SQL (Structured Query Language) (sql)
以下示例将字符串转换为DATETIME
值,因为输入字符串同时提供日期和时间部分。
SELECT STR_TO_DATE('20130101 1130','%Y%m%d %h%i') ;
Code language: SQL (Structured Query Language) (sql)
在本教程中,我们向您展示了使用 MySQL STR_TO_DATE()
函数将字符串转换为日期和时间值的各种示例。