MySQL字符串使用STR_TO_DATE()函数举例说明

 更新时间:2024年04月17日 09:39:25   作者:梁辰兴  
在 MySQL 中,STR_TO_DATE()函数用于将一个字符串转换为日期或时间格式,它可以帮助我们将字符串解析为日期类型,以便在查询中进行比较、计算和显示,这篇文章主要给大家介绍了关于MySQL字符串使用STR_TO_DATE()函数的相关资料,需要的朋友可以参考下

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)]> 

总结 

到此这篇关于MySQL字符串使用STR_TO_DATE()函数举例说明的文章就介绍到这了,更多相关MySQL字符串STR_TO_DATE()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL索引机制的详细解析及原理

    MySQL索引机制的详细解析及原理

    引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构,下面这篇文章主要给大家介绍了关于MySQL索引机制的详细解析及原理的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Mysql触发器字段双向更新方式

    Mysql触发器字段双向更新方式

    这篇文章主要介绍了Mysql触发器字段双向更新方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • MYSQL8.0.13免安装版配置教程实例详解

    MYSQL8.0.13免安装版配置教程实例详解

    这篇文章主要介绍了MYSQL8.0.13免安装版 配置教程,本文是以8.0为例,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2018-12-12
  • MySQL如何让一个表中可以有多个自增列

    MySQL如何让一个表中可以有多个自增列

    这篇文章主要介绍了MySQL如何让一个表中可以有多个自增列,自增列可使用 auto_increment 来实现,当一个列被标识为 auto_increment 之后,在添加时如果不给此列设置任何值,或给此列设置 NULL 值时,那么它会使用自增的规则来填充此列
    2022-06-06
  • 为什么Mysql 数据库表中有索引还是查询慢

    为什么Mysql 数据库表中有索引还是查询慢

    这篇文章主要介绍了为什么Mysql数据库表中有索引还是查询慢,以 user_info 这张表来作为分析的基础,在 user_info 这张表上,我们分别创建了idx_name以及idx_phone 二级索引以及 idx_age_address 联合索引展开详细内容,需要的小伙伴可以参考一下
    2022-05-05
  • MySQL性能优化之如何从底层原理到实战落地

    MySQL性能优化之如何从底层原理到实战落地

    本文将融合底层理论与实战经验,构建“原理认知-问题定位-优化实施-工程保障”的完整体系,助力开发者实现MySQL性能的精准提升,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • 生产环境的MySQL事务隔离级别方式

    生产环境的MySQL事务隔离级别方式

    本文探讨了MySQL数据库在RR(可重复读)和RC(读已提交)隔离级别下的锁机制,在RR级别下,UPDATE语句会锁定所有符合条件的行,包括不符合条件的行,以防止幻读,而在RC级别下,UPDATE语句仅锁定符合条件的行,通过半一致性读优化,可以进一步提高并发度
    2025-02-02
  • 在CentOS上MySQL数据库服务器配置方法

    在CentOS上MySQL数据库服务器配置方法

    最近工作中经常需要使用到MySQL,有时候在WINXP,有时候在Linux中,而这次,需要在CentOS中配置一下,还需要用到phpmyadmin, 在网上搜了不少的资料。
    2010-04-04
  • mysql给字段添加默认值的实现

    mysql给字段添加默认值的实现

    在MySQL中可以使用语句来为现有字段添加默认值,或者在创建表时直接指定默认值,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • mysql中ALTER CONVERSION使用场景

    mysql中ALTER CONVERSION使用场景

    本文主要介绍了mysql中ALTER CONVERSION使用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-05-05

最新评论