当前位置: 代码网 > it编程>数据库>Mysql > MySQL对字符串使用STR_TO_DATE()函数详解

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

2025年03月09日 Mysql 我要评论
mysql字符串使用str_to_date()函数前面我们利用 date_formate() 函数,按照自己希望的格式来输出日期时间。我们从用户界面接收到的信息都是以字符串的形式在进行传递,如何把字符

mysql字符串使用str_to_date()函数

前面我们利用 date_formate() 函数,按照自己希望的格式来输出日期时间。

我们从用户界面接收到的信息都是以字符串的形式在进行传递,如何把字符串转换为日期类型进行存储呢?可使用 str_to_date() 函数。

把字符串转换为日期时间

需要注意以下几点:

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

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

接下来就上述5点注意事项进行举例说明

(这一段说明是针对 mysql 的,webide 使用的是兼容 mysql 的 mariadb,在此环境下进行下面 5 点说明的实验,可能会得到不同结果):

待转换字符串中只能出现数字,否则返回结果为 null。

select str_to_date('2020070a','%y%m%d');

输出结果:

 +----------------------------------+
 | str_to_date('2020070a','%y%m%d') |
 +----------------------------------+
 | null                             |
 +----------------------------------+
 1 row in set, 2 warnings (0.00 sec)

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

select str_to_date('202007','%y%m%d');

输出结果:

 +--------------------------------+
 | str_to_date('202007','%y%m%d') |
 +--------------------------------+
 | null                           |
 +--------------------------------+
 1 row in set, 1 warning (0.00 sec)

注意:字符串 202007 低于 8 位,其结果返回 null。

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

select str_to_date('20201301','%y%m%d');

输出结果:

 +----------------------------------+
 | str_to_date('20201301','%y%m%d') |
 +----------------------------------+
 | null                             |
 +----------------------------------+
 1 row in set, 2 warnings (0.00 sec)

注意:20201301 转换为日期后得到的月份是 13,超出有效范围,故结果返回 null。

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

select str_to_date('2020070110','%y%m%d');

输出结果:

 +------------------------------------+
 | str_to_date('2020070110','%y%m%d') |
 +------------------------------------+
 | 2020-07-01                         |
 +------------------------------------+
 1 row in set, 1 warning (0.00 sec)

格式字符串可以包含时间格式。

select str_to_date('20200701104523','%y%m%d%h%i%s');

输出结果:

 +----------------------------------------------+
 | str_to_date('20200701104523','%y%m%d%h%i%s') |
 +----------------------------------------------+
 | 2020-07-01 10:45:23                          |
 +----------------------------------------------+
 1 row in set (0.00 sec)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

  • MySQL主从同步必然有延迟如何解决

    MySQL主从同步必然有延迟如何解决

    mysql主从同步必然有延迟如何解决mysql 主从同步延迟是生产环境中常见的问题,虽然无法完全消除延迟(受网络、硬件、负载等因素影响),但可以通过多种方法来缓... [阅读全文]
  • MySQL8.0移除传统的.frm文件原因及解读

    MySQL8.0移除传统的.frm文件原因及解读

    mysql 8.0 移除传统的 .frm 文件是为了解决旧架构的局限性,并引入更高效、可靠的事务性数据字典。以下是主要原因和影响:1. 数据一致性与事务性支持旧... [阅读全文]
  • MySQL读写分离的项目时间实践

    读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。一、一主一从读写分离1、一主一从…

    2025年03月06日 数据库
  • MyCat 垂直分片和水平拆分的实现

    一、垂直分片1.1 场景在业务系统中,涉及以下表结构,但是由于用户与订单每天都会产生大量的数据,单台服务器的数据存储及处理能力是有限的,可以对数据库表进行拆分,原有的数据库表如下。…

    2025年03月06日 数据库
  • MySQL常见的存储引擎和区别说明

    MySQL常见的存储引擎和区别说明

    mysql常见的存储引擎和区别说明mysql 支持多种存储引擎,不同引擎在事务、锁机制、性能、存储方式等方面存在显著差异。以下是常见的存储引擎及其区别:1. i... [阅读全文]
  • mysql数据库的五种安装方式总结

    mysql数据库的五种安装方式总结

    第一种,windows版本安装一、准备工作下载mysql安装包访问mysql官网:点击页面的 “mysql community server&rdq... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com