返回顶部
首页 > 资讯 > 数据库 >MySQL 对字符串使用 STR_TO_DATE() 函数
  • 161
分享到

MySQL 对字符串使用 STR_TO_DATE() 函数

mysql数据库sql 2023-08-19 05:08:53 161人浏览 安东尼
摘要

文章目录 STR_TO_DATE() 函数1. 待转换字符串中出现数字以外的,自动去除字符,然后添加0至8位转换为日期2. 如果格式字符串仅包含日期,则待转字符串至少需要 8 位数字3. 转换后日期时间必须有效,否则返回结果为 nu


STR_TO_DATE() 函数

在这里插入图片描述

前面(《Mysql 对日期使用 DATE_FORMAT()函数》)我们利用 date_formate() 函数,按照自己希望的格式来输出日期时间。我们从用户界面接收到的信息都是以字符串的形式在进行传递,如何把字符串转换为日期类型进行存储呢?可使用 str_to_date() 函数。

把字符串转换为日期时间需要注意以下几点:

  • 待转换字符串中只能出现数字,否则返回结果为 null;
  • 如果格式字符串仅包含日期,则待转字符串至少需要 8 位数字,转换时默认前四位是年份,中间两位是月份,最后两位是日期,格式字符串无需使用 - 区分日期各部分,结果会自动用 - 拼接日期各个部分;
  • 转换后日期时间必须有效,否则返回结果为 null;
  • 如果被转字符串超出 8 位且格式字符串中无时间格式,则自动取前 8 位转换为日期;
  • 格式字符串可包含时间格式,格式字符串无需使用 : 区分时间各部分,结果中的时间部分会自动用 : 连接各个部分。

str_to_date() 函数的用法和 date_format() 基本一致,只是输出数据的类型不同,前提都需要熟悉输出格式,参照上表。

接下来就上述 5 点注意事项进行举例说明(这一段说明是针对 mysql 的,WEBide 使用的是兼容 mysql 的 MariaDB,在此环境下进行下面 5 点说明的实验,可能会得到不同结果):

1. 待转换字符串中出现数字以外的,自动去除字符,然后添加0至8位转换为日期

MariaDB [(none)]> select str_to_date('2023050a', '%Y%m%d');+-----------------------------------+| str_to_date('2023050a', '%Y%m%d') |+-----------------------------------+| 2023-05-00                        |+-----------------------------------+1 row in set, 1 warning (0.000 sec)

2. 如果格式字符串仅包含日期,则待转字符串至少需要 8 位数字

MariaDB [(none)]> select str_to_date('202305', '%Y%m%d');+---------------------------------+| str_to_date('202305', '%Y%m%d') |+---------------------------------+| 2023-05-00                      |+---------------------------------+1 row in set (0.000 sec)

结果解析:字符串 202305 低于 8 位,其结果会自动补0至8位。

3. 转换后日期时间必须有效,否则返回结果为 null

MariaDB [(none)]> select str_to_date('20231501', '%Y%m%d');+-----------------------------------+| str_to_date('20231501', '%Y%m%d') |+-----------------------------------+| NULL  |+-----------------------------------+1 row in set, 1 warning (0.000 sec)

结果解析:20231501 转换为日期后得到的月份是 15,超出有效范围,故结果返回 null。

4. 如果被转字符串超出 8 位且格式字符串中无时间格式,则自动取前 8 位转换为日期

MariaDB [(none)]> select str_to_date('2023050110', '%Y%m%d');+-------------------------------------+| str_to_date('2023050110', '%Y%m%d') |+-------------------------------------+| 2023-05-01                          |+-------------------------------------+1 row in set, 1 warning (0.000 sec)

5. 格式字符串可以包含时间格式

MariaDB [(none)]> select str_to_date('20230501104523', '%Y%m%d%H%i%S');+-----------------------------------------------+| str_to_date('20230501104523', '%Y%m%d%H%i%S') |+-----------------------------------------------+| 2023-05-01 10:45:23                           |+-----------------------------------------------+1 row in set (0.000 sec)MariaDB [(none)]> 

来源地址:https://blog.csdn.net/m0_62617719/article/details/130840761

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 对字符串使用 STR_TO_DATE() 函数

本文链接: https://lsjlt.com/news/375071.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作