Mysql中STR_TO_DATE函数使用(字符串转为日期/时间值)

 更新时间:2022年09月18日 10:53:12   作者:山茶花开时。  
这篇文章主要给大家介绍了关于Mysql中STR_TO_DATE函数使用的相关资料,STR_TO_DATE函数的主要功能是字符串转为日期/时间值,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

STR_TO_DATE函数用于将字符串转变为日期/时间值

STR_TO_DATE函数与DATE_FORMAT函数的作用是相反的

语法格式

STR_TO_DATE(str,format)

srt:要格式化为日期的字符串(输入字符串) 

format:要使用的格式字符串

如果不能按照format解析str,STR_TO_DATE函数将返回NULL

如果其中任何一个参数为NULL,STR_TO_DATE函数将返回NULL

将字符串转换为DATE值 

-- 2022-05-25
SELECT STR_TO_DATE('25,5,2022','%d,%m,%Y');
-- 2022-05-26
SELECT STR_TO_DATE('2022-05-26 11:30:00','%Y-%m-%d');
-- 2022-08-05
SELECT STR_TO_DATE('August,5,2022', '%M,%e,%Y');
-- 2022-08-10
SELECT STR_TO_DATE('August 10 2022', '%M %d %Y');
-- 2022-08-14
SELECT STR_TO_DATE('Monday, August 14, 2022', '%W,%M %e, %Y');

将字符串转换为DATETIME值 

-- 2022-05-25 11:30:00
SELECT STR_TO_DATE('20220525 1130','%Y%m%d %h%i');
-- 2022-05-26 11:30:00
SELECT STR_TO_DATE('2022-05-26 11:30:00','%Y-%m-%d %H:%i:%s');
-- 2022-05-27 10:40:10
SELECT STR_TO_DATE('2022,5,27 10,40,10', '%Y,%m,%d %h,%i,%s');

STR_TO_DATE函数在根据格式字符串format解析输入字符串str时,忽略输入字符串str末尾的额外字符

-- 2022-05-25
SELECT STR_TO_DATE('25,5,2022 extra characters','%d,%m,%Y'); 
-- 2022-05-25 11:30:00
SELECT STR_TO_DATE('20220525 1130 extra characters','%Y%m%d %h%i');

如果输入字符串str是非法的,则STR_TO_DATE函数返回NULL

-- NULL
SELECT STR_TO_DATE('2022','%Y');
-- NULL
SELECT STR_TO_DATE('11','%h');
-- NULL
SELECT STR_TO_DATE('1130','%h%i');
-- NULL
SELECT STR_TO_DATE('113005','%h%i%s');
-- NULL
SELECT STR_TO_DATE('August,5,2017', '%M %e %Y');
-- NULL
SELECT STR_TO_DATE('Monday, August 14, 2017', '%W %M %e %Y');
 

补充:MySQL中STR_TO_DATE()函数无效

1.问题场景

接收了一个老项目,其中有个时间字段为string类型,我现在要判断这个时间。选择得方法是用STR_TO_DATE()函数。测试服务器上没问题,生产上却没起作用。

 <if test= "graduateStart != null and graduateStart != ''">
     and DATE_FORMAT(STR_TO_DATE(e.end_date,'%Y'),"%Y") <![CDATA[ >= ]]> #{graduateStart}
 </if>

 <if test= "graduateEnd != null and graduateEnd != ''">
 and DATE_FORMAT(STR_TO_DATE(e.end_date,'%Y'),"%Y") <![CDATA[ <= ]]> #{graduateEnd}
 </if>

2.原因

测试服务器上的MySQL与生产上的不同。查看一下sql_mode

SELECT @@sql_mode;

结果:

测服
STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

生产
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

3.解决办法

删除,NO_ZERO_IN_DATE,NO_ZERO_DATE

set @@sql_mode = ‘STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

长期更改的办法:在 my.ini 文件中修改

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

总结

到此这篇关于Mysql中STR_TO_DATE函数使用的文章就介绍到这了,更多相关Mysql中STR_TO_DATE函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql使用SQLyog导入csv数据不成功的解决方法

    mysql使用SQLyog导入csv数据不成功的解决方法

    给mysql导入数据,选中某个表选择导入--导入使用本地csv数据即可,单有的时候不知道什么问题导入不成功
    2014-07-07
  • Mysql5.7修改root密码教程

    Mysql5.7修改root密码教程

    今天小编就为大家分享一篇关于Mysql5.7修改root密码教程,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • MySQL中CASE WHEN语句用法、示例与解析举例

    MySQL中CASE WHEN语句用法、示例与解析举例

    这篇文章主要给大家介绍了关于MySQL中CASE WHEN语句用法、示例与解析的相关资料,case when语句用于计算条件列表并返回多个可能结果表达式之一,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • Windows环境下MySQL 8.0 的安装、配置与卸载

    Windows环境下MySQL 8.0 的安装、配置与卸载

    这篇文章主要介绍了Windows环境下MySQL 8.0 的安装、配置与卸载步骤,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Navicat连接MySQL错误描述分析

    Navicat连接MySQL错误描述分析

    最近遇到了一件非常棘手的问题,用Navicat连接MySQL总是出错, 网上查阅了一下原因,最终找到解决方案,好吧,下面我就来回忆一下自己怎么处理这问题的,分享到脚本之家平台需要的朋友参考下吧
    2021-06-06
  • MySQL恢复误删数据图文教程

    MySQL恢复误删数据图文教程

    MySQL误删数据库造成了数据的丢失,这是非常尴尬的,下面这篇文章主要给大家介绍了关于MySQL恢复误删数据的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • MySQL优化方案之开启慢查询日志

    MySQL优化方案之开启慢查询日志

    相信大家应该都知道MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,下面这篇文章主要给大家介绍了关于MySQL优化方案之开启慢查询日志的相关资料,需要的朋友可以参考下
    2021-12-12
  • mysql优化之like和=性能详析

    mysql优化之like和=性能详析

    这篇文章主要给大家介绍了关于mysql优化之like和=性能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Mysql 5.6使用配置文件my.ini来设置长时间连接数据库的问题

    Mysql 5.6使用配置文件my.ini来设置长时间连接数据库的问题

    这篇文章主要介绍了Mysql 5.6使用配置文件my.ini来设置长时间连接数据库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 在Centos7中利用Shell脚本实现MySQL数据备份

    在Centos7中利用Shell脚本实现MySQL数据备份

    备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程,本文将给大家介绍了在Centos7中利用Shell脚本实现MySQL数据备份,文中有详细的图文介绍,需要的朋友可以参考下
    2023-12-12

最新评论