这个问题我遇到过,如果你在MYSQL端用日期来查询,是很难避免这种情况的,所以这种情况下,你就得迭代一次一次去查询每一天的统计,我上次是用MySQL直接查的。后来还得重新判断日期,没有的默认为0,听恶心的,
成都创新互联服务项目包括寿光网站建设、寿光网站制作、寿光网页制作以及寿光网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,寿光网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到寿光省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
今天
select * from 表名 where mytime(时间字段名) = mytime(now());
昨天
select * from 表名 where mytime( now( ) ) - mytime( 时间字段名) = 1
7天
select * from 表名 where date_sub(cur(), interval(7 day = date(时间字段名)
在PHP里面,使用time函数获得当前的时间(年月日时分秒都有,实际上是从1970 年 1 月 1 日 00:00:00到当前时间的秒数。
那么,要获得7天前的时刻只需要当前时刻减去7天*24小时/天*3600秒/小时即可,也就是time()-7-24*3600。
例子代码:
?php
$t=time();
echo date('Y-m-d H:i:s',$t)."\n";
$t-=7*24*3600;
echo date('Y-m-d H:i:s',$t)."\n";
?
上面的代码显示:
2015-12-17 13:29:59
2015-12-10 13:29:59
如果你只需要到天,不需要时分秒,那么date函数的第一个参数改为'Y-m-d'即可。
你的数据库里需要有一个记录时间的字段,例如这个字段是posttime,每次插入数据的时候,都记录下当前的时间戳,也就是time();
你需要得到上周开始,和上周结束的时间戳
$beginLastweek=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
$endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
3.查询的时候,WHERE 条件里加上 posttime=$beginLastweek AND posttime=$endLastweek
希望对你有帮助