(转)MySQL获取某个时间范围内的数据 TO_DAYS(date)函数与now()函数

有这样一个需求,我们需要获得某个时间段内所有数据记录,比如最近一个月内的新闻,然后再在这个数据集合中进行排序,看哪个新闻的点击率最高。现在问题是,如何获得那个时间段。MySQL已经有些函数可以帮助我们,先看看这些函数吧。

TO_DAYS(date) 函数

给定一个日期date,返回一个天数(从年份0开始的天数)。

比如下面的例子:

1 mysql> SELECT TO_DAYS(‘2009-08-07‘);
2 +-----------------------+
3 | TO_DAYS(‘2009-08-07‘) |
4 +-----------------------+
5 |                733991 |
6 +-----------------------+
7 1 row in set

TO_DAYS() 不用于阳历出现(1582)前的值,原因是当日历改变时,遗失的日期不会被考虑在内。

请记住,MySQL“日期和时间类型”中的规则将日期中的二位数年份值转化为四位。例如,‘2010-08-07′和 ‘10-08-07′ 被视为同样的日期:

1 mysql> SELECT TO_DAYS(‘2009-08-07‘),TO_DAYS(‘09-08-07‘);
2 +-----------------------+---------------------+
3 | TO_DAYS(‘2009-08-07‘) | TO_DAYS(‘09-08-07‘) |
4 +-----------------------+---------------------+
5 |                733991 |              733991 |
6 +-----------------------+---------------------+
7 1 row in set

对于1582年之前的日期(或许在其它地区为下一年),该函数的结果实不可靠的。

now() 函数

NOW() 函数返回当前的日期和时间。

1 mysql> select (now());
2 +---------------------+
3 | (now())             |
4 +---------------------+
5 | 2010-08-26 21:18:44 |
6 +---------------------+
7 1 row in set

to_days(current_date)也可以实现上面的功能。

1 mysql> select to_days(current_date);
2 +-----------------------+
3 | to_days(current_date) |
4 +-----------------------+
5 |                734375 |
6 +-----------------------+
7 1 row in set

结果

现在我们可以得出问题的答案了:

1 select * from news where to_days(now())-to_days(newsdate) < 30 order by view desc limit 0, 10

可以获得一个月内浏览数最高的十条记录。

转至(http://www.nowamagic.net/librarys/veda/detail/415)

时间: 2024-10-16 19:44:32

(转)MySQL获取某个时间范围内的数据 TO_DAYS(date)函数与now()函数的相关文章

mysql查询特定时间段内的数据

SET FOREIGN_KEY_CHECKS=0; -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS t_user; CREATE TABLE t_user ( userId bigint(20) NOT NULL, fullName varchar(64) NOT NULL, userType varchar(16) NOT NULL, addedTime datetime NO

Java 获取一定时间范围内的日期序列

以下是获取从2015年2月25到2015年3月08的日期序列的字符串java程序 通过修改程序中的startday和endday就可以调整日期范围 1 String startday = "20150225"; 2 String endday = "20150308"; 3 ArrayList<String> daysarr = new ArrayList<String>(); 4 SimpleDateFormat sdf = new Sim

easyUI这样获取Json的内嵌数据 显示json下的json

先给出返回的json数据. { "total": "2", "rows": [ { "id": "1", "name": "张富银", "xiuhao": "2014009012", "exttend": { "sid": "1", "tid": &

php操作mysql获取html标签&lt;select&gt;下拉列表数据

Rest访问获取其他表内的数据

http://valexsu/sites/xoec/wf/_api/web/lists/GetByTitle('IBDManagement%20List')/Items?$select=Field_OTIS_ProcessNo,Field_OTIS_OrderNo,Created,Author/Title&$expand=Author&$filter=Field_OTIS_OrderNo%20eq%20%27asdfsa%27 参考:http://msdn.microsoft.com/zh

MYSQL查询一周内的数据(最近7天的)

select * from wap_content where week(created_at) = week(now) 如果你要严格要求是某一年的,那可以这样 查询一天: select * from table where to_days(column_time) = to_days(now());select * from table where date(column_time) = curdate(); 查询一周: select * from table where DATE_SUB(C

PHP 获取 特定时间范围 类

目录  前序 用途 功能及事项 使用方法 代码及注释 前序: 总体来说,我更应该是一个 android 移动开发者,而不是一个 phper,如果说只做移动端的 APP ,我也不会学这么多,这 2年来,几乎所有的服务器接口都也是 由我一手操办,用的是 pHp,我是在很不愿意的情况下完成这个类的,因为 项目分工的 后台程序员,没完善这块,所以等不了他了,只能自己来搞,但这样自己的任务时间就少了.这个类的功能还是挺强大的,适合很多地方. Whatever,enjoy this `Class`. 用途:

转: MYSQL获取更新行的主键ID

在某些情况下我们需要向数据表中更新一条记录的状态,然后再把它取出来,但这时如果你在更新前并没有一个确认惟一记录的主键就没有办法知道哪条记录被更新了. 举例说明下: 有一个发放新手卡的程序,设计数据库时常见的方案有两种: 方案一:使用一张表,新手卡和领取记录都在一起,这样主要字段就是新手卡(主键).用户ID(惟一).领取状态(非必要)等 这样的话数据库操作就简单了,直接一条update sql,将用户id更新到这张表里,然后根据用户ID再select出来就好了.但这样记录很多时就会有效率的问题,暂

MySQL 查询时间段内的数据

先来建表语句: SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `userId` bigint(20) NOT NULL, `fullName` varchar(64) NOT NULL, `use