在mysql中可以实现比较时间,其语句如【SELECT testdate FROM t1 WHERE testdate >= ‘2018-09-12’;SELECT testdate FROM t1 WHERE testdate >= 20180912;】。

最近发现自己一直以来经常用一种错误的方法在比较日期,例如一下语句,a字段是一个DATETIME类型的列:
select a from t1 where DATEDIFF(a, '2018-09-11') < 0;
该语句是为了查出2018-09-11 日期之前的所有记录,但这个语句有个问题,如果a字段加了索引,用这种类型进行日期对比,会导致查询不走索引,从而使查询性能下降。
推荐课程:MySQL教程。

看了Mysql关于日期字段对比的文档。在进行日期比较的时候,mysql会自动将日期转换成数字进行比较。where条件后,使用字符串格式日期与DATE,DATETIME,TIMESTAMP,TIME类型字段进行比较的时候,对字符串格式要求不严格,你可以使用任意格式的分隔符来表示日期,例如”2018-09-11″,”2018#09#11″,”2018&09&11″对于mysql来说,都是相同的日期。如果没有分隔符,例如”20180911″,与”2018-09-11″或其他有分隔符的日期,也是相同的。例如下图
select a from t1 where a < '2018#09#11';与select a from t1 where a < '2018-09-11';与select a from t1 where a < '20180911';所代表的意义是相同的,都是查询日期小于2018年9月11日的数据也就是说上图的查询语句,完全可以重写为,这么做的好处?就是会使用索引,是查询更快select a from t1 where a < '2018-09-11';
当将日期类型字段与字符串型日期进行,>=,<=,between比较的时候,Mysql会将字符串类型日期转换成长整型数字进行比较,从而加快查询速度。
下面三种情况除外:
1,两个表格字段的对比;
标书对比王
标书对比王是一款标书查重工具,支持多份投标文件两两相互比对,重复内容高亮标记,可快速定位重复内容原文所在位置,并可导出比对报告。
58 查看详情
2,日期类型字段与表达式对比;
3,使用表达式对日期类型字段进行对比;
原因:对于以上三种情况,mysql会将日期转换为字符串进行比较。
下面的例子,都是可以正常运行的:
INSERT INTO t1 (testdate) VALUES (20180912);INSERT INTO t1 (testdate) VALUES ('20180912');INSERT INTO t1 (testdate) VALUES ('18-09-12');INSERT INTO t1 (testdate) VALUES ('2018.09.12');INSERT INTO t1 (testdate) VALUES ('2018 09 12');INSERT INTO t1 (testdate) VALUES ('0000-00-00');SELECT testdate FROM t1 WHERE testdate >= '2018-09-12';SELECT testdate FROM t1 WHERE testdate >= 20180912;SELECT MOD(testdate,100) FROM t1 WHERE testdate >= 20180912;SELECT testdate FROM t1 WHERE testdate >= '20180912';
Mysql允许存储”0000-00-00″作为DATE类型的“0”值,也称之为虚拟日期。在某些场景下比储存NULL值更便捷。如果将一个不合法的日期值保存到DATE类型字段中,mysql默认存储为”0000-00-00″。 如果不允许存储”0″值,请启用NO_ZERO_DATE参数。
也可使用unix_timestamp函数,将字符型的时间,转成unix时间戳。
select meeting_id,meeting_name,start_time,end_time from meeting_data where meeting_id REGEXP '[0-9]{4}0001' and unix_timestamp(start_time) unix_timestamp(NOW());
以上就是mysql可以比较时间吗的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/369728.html
微信扫一扫
支付宝扫一扫