专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > MySQL培训 > MySQL课程 > MySQL培训课程:返回日期和时间范围

MySQL培训课程:返回日期和时间范围

文章来源: 更新时间:2016/7/19 16:21:46

在线老师点击咨询:

最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

MySQL培训课程:返回日期和时间范围,当你分析表中的数据时,你也许希望取出某个特定时间的数据。我们用下面一个表来模仿一个web站点的记录。

MySQL> CREATE TABLE weblog

-> (

-> data float,

-> entrydate datetime

-> );

然后随机的增加几个数据:

MySQL> INSERT weblog VALUES(rand(),now());

rand()函数返回一个随机的浮点值,now()函数返回当前时间。多执行上面语句几次,得到一个作为测试的表。

最为测试你还可以增加一个值:

MySQL> INSERT weblog VALUES(rand(),”2001-02-08”);

这条语句,插入一个entry为”2001-02-08 00:00:00”的值(假定现在为2001年2月8日),你可以查看这个表的值:

MySQL> select * from weblog;

+-----------+---------------------+

| data | entrydate |

+-----------+---------------------+

| 0.973723 | 2001-02-08 00:00:00 |

| 0.437768 | 2001-02-08 13:57:06 |

| 0.327279 | 2001-02-08 13:57:09 |

| 0.0931809 | 2001-02-08 13:58:29 |

| 0.198805 | 2001-02-08 13:57:54 |

+-----------+---------------------+

你也许对特定的某一天中――比如说2001年2月18日――访问者在你站点上的活动感兴趣。要取出这种类型的数据,你也许会试图使用这样的SELECT语句:

MySQL> SELECT * FROM weblog WHERE entrydate="2001-02-08"

不要这样做。这个SELECT语句不会返回正确的记录――它将只返回值为2000-02-08 00:00:00的记录,换句话说,只返回当天零点零时的记录。上面语句的结果为:

+----------+---------------------+

| data | entrydate |

+----------+---------------------+

| 0.973723 | 2001-02-08 00:00:00 |

+----------+---------------------+

要返回正确的记录,你需要适用日期和时间范围。有不止一种途径可以做到这一点。

1、使用关系运算符和逻辑运算符来限制时间范围

例如,下面的这个SELECT 语句将能返回正确的记录:

MySQL> SELECT * FROM weblog

-> WHERE entrydate>="2001-02-08" AND entrydate<"2001-02-09" ;

这个语句可以完成任务,因为它选取的是表中的日期和时间大于等于2001-02-08 00:00:00并小于2001-02-09 00:00:00的记录。换句话说,它将正确地返回2000年2月8日这一天输入的每一条记录。 其结果为:

+-----------+---------------------+

| data | entrydate |

+-----------+---------------------+

| 0.973723 | 2001-02-08 00:00:00 |

| 0.437768 | 2001-02-08 13:57:06 |

| 0.327279 | 2001-02-08 13:57:09 |

| 0.0931809 | 2001-02-08 13:58:29 |

| 0.198805 | 2001-02-08 13:57:54 |

+-----------+---------------------+

2、另一种方法是,你可以使用LIKE来返回正确的记录。

通过在日期表达式中包含通配符“%”,你可以匹配一个特定日期的所有时间。

这里有一个例子:

MySQL> SELECT * FROM weblog WHERE entrydate LIKE '2001-02-08%' ;

这个语句可以匹配正确的记录。因为通配符“%”代表了任何时间。

+-----------+---------------------+

| data | entrydate |

+-----------+---------------------+

| 0.973723 | 2001-02-08 00:00:00 |

| 0.437768 | 2001-02-08 13:57:06 |

| 0.327279 | 2001-02-08 13:57:09 |

| 0.0931809 | 2001-02-08 13:58:29 |

| 0.198805 | 2001-02-08 13:57:54 |

+-----------+---------------------+

3、上面两种方法的异同

由于使用关系运算符进行的是比较过程,时转换成内部的存储格式后进行的,因此,因此时间的书写可以不是那么严格要求。

例如,下面几种写法是等价的:

MySQL> SELECT * FROM weblog WHERE entrydate>="2001-02-08";

MySQL> SELECT * FROM weblog WHERE entrydate>="2001-2-8";

MySQL> SELECT * FROM weblog WHERE entrydate>="2001*02*08";

MySQL> SELECT * FROM weblog WHERE entrydate>="20010208";

SELECT * FROM weblog WHERE entrydate>="2001/2/8";

而使用LIKE运算符和模式匹配,是通过比较串值进行的,因此必须使用标准的时间书写格式,YYYY-MM-DD HH-MM-SS。

本文地址:http://www.cuug.com.cn/mysql/kecheng/12516612035.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
地址:北京市海淀区北清路164号28-38号院
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1