百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql可以比拼工夫吗
分享文章到:

mysql可以比拼工夫吗

发布时间:08/01 来源:未知 浏览: 关键词:
看了mysql对于日期字段对照的文档。在进行日期比拼的时候,mysql会主动将日期转换成数字进行比拼。where前提后,运用字符串格局日期与DATE,DATETIME,TIMESTAMP,TIME类型字段进行比拼的时候,对字符串格局请求不严 比来发明本人不断以来时常用一种差错的办法在比拼日期,例如一下语句,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,两个表格字段的对照;

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()) 
		and unix_timestamp(end_time) > unix_timestamp(NOW());

以上就是mysql可以比拼工夫吗的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板