strtodate mysql_MySQL str_to_date()函数

本文介绍如何使用 MySQL 的 STR_TO_DATE 函数将字符串转换为日期时间值,并通过多个实例演示其用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在本教程中,我们将向您展示如何使用MySQL STR_TO_DATE()函数将字符串转换为日期时间值。

MySQL STR_TO_DATE函数简介

下面说明了STR_TO_DATE()函数的语法:

STR_TO_DATE(str,fmt);

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值,如下所示 -

mysql> SELECT STR_TO_DATE('21,5,2018','%d,%m,%Y');

+-------------------------------------+

| STR_TO_DATE('21,5,2018','%d,%m,%Y') |

+-------------------------------------+

| 2018-05-21 |

+-------------------------------------+

1 row in set

根据格式字符串格式'%d,%m,%Y',STR_TO_DATE()函数扫描'21,5,2018'输入字符串。

首先,它尝试在输入字符串中找到%d格式说明符的匹配项,这是一个月的日期(01 … 31)。 因为21号与%d说明符相匹配,所以该函数将21作为日期值。

第二步,因为格式字符串中的逗号(,)字符串与输入字符串中的逗号匹配,所以函数继续检查第二个格式说明符%m,这是一个月(01 … 12),并且发现数字 5与%m格式说明符匹配。以数字5为月份。

第三步,在匹配第二个逗号(,)之后,STR_TO_DATE()函数会继续找到第三个格式说明符%Y的匹配项,它是四位数的年份,例如2012,2013等,它的编号为2013 年值。

STR_TO_DATE()函数在根据格式字符串解析输入字符串时忽略输入字符串末尾的额外字符。 请参阅以下示例:

mysql> SELECT STR_TO_DATE('21,5,2013 extra characters','%d,%m,%Y');

+------------------------------------------------------+

| STR_TO_DATE('21,5,2013 extra characters','%d,%m,%Y') |

+------------------------------------------------------+

| 2013-05-21 |

+------------------------------------------------------+

1 row in set

STR_TO_DATE()将输入字符串不提供的所有不完整的日期值设置为零。 请参阅以下示例:

mysql> SELECT STR_TO_DATE('2018','%Y');

+--------------------------+

| STR_TO_DATE('2018','%Y') |

+--------------------------+

| NULL |

+--------------------------+

1 row in set

因为输入字符串只提供年值,所以STR_TO_DATE()函数返回一个日期值,它的月和日设置为零。

以下示例将时间字符串转换为TIME值:

mysql> SELECT STR_TO_DATE('113005','%h%i%s');

+--------------------------------+

| STR_TO_DATE('113005','%h%i%s') |

+--------------------------------+

| NULL |

+--------------------------------+

1 row in set

类似于未指定的日期部分,STR_TO_DATE()函数将未指定的时间部分设置为零,请参见以下示例:

mysql> SELECT STR_TO_DATE('11','%h');

+------------------------+

| STR_TO_DATE('11','%h') |

+------------------------+

| NULL |

+------------------------+

1 row in set

以下示例将字符串转换为DATETIME值,因为输入字符串提供日期和时间部分。

mysql> SELECT STR_TO_DATE('20130101 1130','%Y%m%d %h%i') ;

+--------------------------------------------+

| STR_TO_DATE('20130101 1130','%Y%m%d %h%i') |

+--------------------------------------------+

| 2013-01-01 11:30:00 |

+--------------------------------------------+

1 row in set

在本教程中,我们向您展示了使用MySQL STR_TO_DATE()函数将字符串转换为日期和时间值的各种示例。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值