1.获取今日数据
敲黑板:Mysql中的 now(),curdate()函数:获取当前日期
select now(),curdate();
运行SQL后得到的数据如下所示:
now()
curdate()
2017-09-01 12:07:34
2017-09-01
->now()函数可以精确到 年月日时分秒,curdate()函数可以精确到 年月日
今日的网站访问量获取方式为:
select count(*) from log_web where time >= CURDATE();
运行SQL:count(*)值 2
2.获取昨日数据
敲黑板:DATE(date) 函数:将参数转为日期输出,精确到年月日
DATE_SUB(date,INTERVAL expr type)函数:获取一个指定间隔的日期, 详见API
SELECT now(),DATE(now()), DATE_SUB(CURDATE(),INTERVAL 1 DAY);
运行SQL后得到的数据如下所示:
now()
DATE(now())
DATE_SUB(CURDATE(),INTERVAL 1 DAY)
2017-09-01 12:07:34
2017-09-01
2017-08-31
->Date函数使值输出为YYYY-MM-DD格式的日期;
->date_sub函数,传递了{date=curdate(),expr=1,type=day}三个参数,{curdate()=2017-09-01};运行为:获取距离当前时间1天的日期;type的参数可以为多种,见API
昨日的网站访问量获取方式为:
SELECT count(*) from log_web where date(time) = DATE_SUB(CURDATE(),INTERVAL 1 DAY);
运行SQL:count(*)值 2
同理可得,前天的网站访问量获取方式为:
SELECT count(*) from log_web where date(time) = DATE_SUB(CURDATE(),INTERVAL 2 DAY);
去年今日的网站访问量获取方式为:
SELECT count(*) from log_web where date(time) = DATE_SUB(CURDATE(),INTERVAL 1 YEAR);
3.获取近7天的访问量,不包含今天
SELECT count(*) from log_web where time > DATE_SUB(CURDATE(),INTERVAL 7 DAY) and time < DATE(now());
curdate()=2017-09-01;
DATE_SUB(CURDATE(),INTERVAL 7 DAY) =2017-08-25;
now()=2017-09-01 12:07:34 ;
DATE(now())=2017-09-01;
–>查询时间为最近7天的数据。 2017-09-01>time>2017_08_25
若没有and time < DATE(now()),则获取到的数据为最近7天,25、26、27、28、29、30 、31,以及当天09-01的数据值;time>2017_08_25
同理获取近30天的访问量,不包含今天
SELECT count(*) from log_web where time > DATE_SUB(CURDATE(),INTERVAL 30 DAY) and time < DATE(now());
同理可得,前几周,前几个月,前几小时,前几分钟的数据,参考API参数
4.获取本月数据
敲黑板:DATE_FORMAT(date, ‘%Y%m’ )函数
select DATE_FORMAT(now(), ‘%Y%m’ );
运行SQL后得到的数据如下所示:
now()
201709
->得当当前月的月份
> **SELECT count(*) FROM log_web WHERE DATE_FORMAT(time, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' );**
5.获取上个月数据
> **SELECT count(*) FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( time, '%Y%m' ) ) =1**
敲黑板:PERIOD_DIFF()函数;
获取2个时间点之间的距离,如上距今1个月份,即上个月;用DATE_SUB()函数也可实现,type=MONTH即可