博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql 函数 STR_TO_DATE
阅读量:4180 次
发布时间:2019-05-26

本文共 1141 字,大约阅读时间需要 3 分钟。

最近遇到一个 STR_TO_DATE 的问题,一直没有找到原因:

使用 STR_TO_DATE 函数作为查询条件,可以查询出数据
使用 STR_TO_DATE 函数作为删除的过滤条件,却报错了

STR_TO_DATE 的简单使用示例

SELECT     STR_TO_DATE('2020-02-26 12:11:33','%Y-%m-%d %H:%i:%s'),    STR_TO_DATE('2020-02-26 12:11:33','%Y-%m-%d %H:%i'),    STR_TO_DATE('2020-02-26', '%Y-%m-%d')FROM DUAL;

输出结果

2020-02-26 12:11:332020-02-26 12:11:002020-02-26

问题还原

删除日期小于今天的数据,因保存日期的字段类型是字符串,故先转换为日期,再去删除数据。

1.建表

CREATE TABLE `tmp_string_date` (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',  `save_day` varchar(50) DEFAULT NULL COMMENT '保存的时间',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.插入一条数据

INSERT INTO `tmp_string_date` (`id`,`save_day`) VALUES (1,'2020-02-26 12:11:33');

表数据

3.删除这条数据

delete from tmp_string_date where STR_TO_DATE(save_day,'%Y-%m-%d %H:%i') < now();

删除居然报错了,日期格式化为 ‘%Y-%m-%d %H:%i’ ,没有精确到秒居然报错了,错误信息为:

Error Code: 1292. Truncated incorrect datetime value: '2020-02-26 12:11:33'	0.000 sec

4.换一种格式化方式,精确到秒,可以删除成功

delete from tmp_string_date where STR_TO_DATE(save_day,'%Y-%m-%d %H:%i:%s') < now();

5.不精确到秒,改为查询语句却可以执行成功

select * from tmp_string_date where STR_TO_DATE(save_day,'%Y-%m-%d %H:%i') < now();

特此记录,待解决。。。

转载地址:http://imrai.baihongyu.com/

你可能感兴趣的文章
Android 的source (需安装 git repo)
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
java多线程中的join方法详解
查看>>
在C++中如何实现模板函数的外部调用
查看>>
HTML5学习之——HTML 5 应用程序缓存
查看>>
HTML5学习之——HTML 5 服务器发送事件
查看>>
SVG学习之——HTML 页面中的 SVG
查看>>
SVG 滤镜学习之——SVG 滤镜
查看>>
mysql中用命令行复制表结构的方法
查看>>
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
让代码变得更优雅-Lombok
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
kermit的安装和配置
查看>>
vim 配置
查看>>
openocd zylin
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>
C++程序员技术需求规划(发展方向)
查看>>