mysql日期范围比较函数_(转)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 rowin 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 rowin set

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

now() 函数

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

1

mysql>select (now());

2

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

3

| (now())             |

4

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

5

| 2010-08-26 21:18:44 |

6

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

7

1 rowin set

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

1

mysql>select to_days(current_date);

2

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

3

| to_days(current_date) |

4

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

5

|                734375 |

6

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

7

1 rowin set

结果

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

1

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

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

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

标签:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值