首页 >数据库 >mysql教程 >mysql可以比较时间吗

mysql可以比较时间吗

(*-*)浩
(*-*)浩原创
2019-05-10 11:32:2914480浏览

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

mysql可以比较时间吗

最近发现自己一直以来经常用一种错误的方法在比较日期,例如一下语句,a字段是一个DATETIME类型的列:

select a from t1 where DATEDIFF(a, &#39;2018-09-11&#39;) < 0;

该语句是为了查出2018-09-11 日期之前的所有记录,但这个语句有个问题,如果a字段加了索引,用这种类型进行日期对比,会导致查询不走索引,从而使查询性能下降。

推荐课程:MySQL教程

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 e8de96d8d8658290bc2eb7e858b63f19,>=,f89d7990585486516051260c3c9e19c9= '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) 98af3aed4642ba62db3d3875db9cdaa5 unix_timestamp(NOW());

以上是mysql可以比较时间吗的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn