服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - Mysql中STR_TO_DATE函数使用(字符串转为日期/时间值)

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

2022-11-13 16:11山茶花开时。 Mysql

这篇文章主要给大家介绍了关于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值

?
1
2
3
4
5
6
7
8
9
10
-- 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值 

?
1
2
3
4
5
6
-- 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末尾的额外字符

?
1
2
3
4
-- 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

?
1
2
3
4
5
6
7
8
9
10
11
12
-- 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()函数。测试服务器上没问题,生产上却没起作用。

?
1
2
3
4
5
6
7
<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

?
1
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

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

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

?
1
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

总结

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

原文链接:https://blog.csdn.net/Hudas/article/details/124962176

延伸 · 阅读

精彩推荐
  • MysqlCentOS 7下mysql 5.7 安装教程

    CentOS 7下mysql 5.7 安装教程

    这篇文章主要为大家详细介绍了CentOS 7下mysql 5.7 安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    代码唐小白5462020-09-04
  • MysqlJmeter连接数据库过程图解

    Jmeter连接数据库过程图解

    这篇文章主要介绍了jmeter连接数据库过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...

    jasmine06276482020-12-09
  • Mysql使用mysqldump对MySQL的数据进行备份的操作教程

    使用mysqldump对MySQL的数据进行备份的操作教程

    这篇文章主要介绍了使用mysqldump对MySQL的数据进行备份的操作教程,示例环境基于CentOS操作系统,需要的朋友可以参考下 ...

    workming3352020-05-26
  • Mysql体验MySQL5.6.25并处理所遇到的问题

    体验MySQL5.6.25并处理所遇到的问题

    本文给大家分享的是将mysql升级到5.6.25版本后所遇到的2个问题的处理解决办法,有需要的小伙伴可以参考下。 ...

    MYSQL教程网3672020-05-15
  • Mysqlmysql5.7数据库安装完成后如何配置环境变量

    mysql5.7数据库安装完成后如何配置环境变量

    这篇文章主要为大家详细介绍了在win10系统下,mysql5.7数据库安装完成后配置环境变量的具体步骤,感兴趣的小伙伴们可以参考一下...

    szh01299092020-06-15
  • Mysql简单了解标准SQL的update语句三种用法

    简单了解标准SQL的update语句三种用法

    这篇文章主要介绍了简单了解标准SQL的update语句三种用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋...

    leizhimin5492020-10-05
  • Mysql查询优化之EXPLAIN的使用分析

    查询优化之EXPLAIN的使用分析

    本篇文章是对EXPLAIN的使用进行了详细的分析介绍,需要的朋友参考下 ...

    MYSQL教程网2142019-12-26
  • Mysql如何设置才能远程登录Mysql数据库

    如何设置才能远程登录Mysql数据库

    本地机器安装的数据库,本地程序可以访问,但是同事的机器却无法连接访问,发现是mysql数据库没有开启远程访问。那么我们需要如何设置呢,这就是本...

    hebedich3652020-04-19