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

 更新时间:2025年03月08日 16:34:43   作者:ptw-cwl  
文章介绍了MySQL中的STR_TO_DATE()函数,用于将字符串转换为日期时间类型,转换时需要注意字符串格式、日期有效性等问题

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)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL视图简介及基本操作教程

    MySQL视图简介及基本操作教程

    这篇文章主要给大家介绍了关于MySQL视图简介及基本操作的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • MySQL8.0离线迁移表空间的全攻略分享

    MySQL8.0离线迁移表空间的全攻略分享

    很多同学不知道如何在 MySQL 服务器离线(关闭)状态下安全地移动 InnoDB 表空间文件(如 .ibd、ibdata1、undo 文件等)到新位置,所以本文我们来一步步拆解、解释和理解这个功能的核心思想与操作流程,需要的朋友可以参考下
    2025-09-09
  • MySQL CRUD 查询、插入、更新、删除全实战指南

    MySQL CRUD 查询、插入、更新、删除全实战指南

    在 MySQL日常开发中CRUD是最核心的高频操作,本文基于实战场景,全面拆解MySQL的增删改查操作,所有SQL语句均采用小写形式,贴合实际开发规范,同时涵盖聚合查询、分组统计等进阶内容,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • Mysql CONVERT函数的具体使用

    Mysql CONVERT函数的具体使用

    本文主要介绍了Mysql CONVERT函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 如何查看连接MYSQL数据库的IP信息

    如何查看连接MYSQL数据库的IP信息

    这篇文章介绍了三种查看连接MYSQL数据库的IP信息方法,方法简单实用,需要的朋友可以参考下
    2015-07-07
  • windows下MySQL免安装版配置教程mysql-5.6.51-winx64.zip版本(最新安装教程)

    windows下MySQL免安装版配置教程mysql-5.6.51-winx64.zip版本(最新安装教程)

    这篇文章主要介绍了windows下MySQL免安装版配置教程mysql-5.6.51-winx64.zip版本(最新安装教程),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • mysql导出指定数据或部份数据的方法

    mysql导出指定数据或部份数据的方法

    mysql虽然可以使用mysqldump来进行数据的到处,可是在很多场合的需求都不一样,比如我只要导出某个字段呢?只要导出某些我需要的数据呢?
    2014-03-03
  • MySQL中WITH AS语句的使用方法举例

    MySQL中WITH AS语句的使用方法举例

    在MySQL中WITH AS语法用于创建一个临时的命名查询(也称为子查询),这些子查询可以在后续的查询中引用,从而简化查询语句的编写,这篇文章主要给大家介绍了关于MySQL中WITH AS语句的使用方法,需要的朋友可以参考下
    2024-06-06
  • windows下安装mysql8.0.18的教程(社区版)

    windows下安装mysql8.0.18的教程(社区版)

    本文章简单介绍一下mysql在windows下的安装方式,主要介绍了mysql社区版8.0.18版本,本文给大家介绍的非常详细,需要的朋友参考下吧
    2020-01-01
  • 在 MySQL 中快速的复制一张表包括表结构和数据

    在 MySQL 中快速的复制一张表包括表结构和数据

    文章介绍了四种复制MySQL表的方法,包括CREATE TABLE...SELECT、CREATE TABLE...LIKE...INSERT、mysqldump工具和物理文件复制,每种方法都有其适用场景和优缺点,面试时,应根据表的大小、结构完整性、效率和适用场景选择合适的方法,感兴趣的朋友跟随小编一起看看吧
    2025-12-12

最新评论