扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
可按日期分组,如:
创新互联专注于中大型企业的网站制作、做网站和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户上千,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注品牌网站制作和互联网程序开发,在前进的路上,与客户一起成长!
select count(1) from table_name group by date_format(date,'%y-%m-%d');
说明 : 统计每天数据量,table_name 表名 date 分组日期字段
从你的结构可以看出,你的日期使用的是UNIX时间戳,不是数据库的日期类型,这个可以使用函数FROM_UNIXTIME转换为数据库日期类型,然后使用date_format函数转换为指定格式。也可以使用UNIX_TIMESTAMP函数把日期转换为时间戳进行比较。
例如:查询本月的数据条件可以这样写:
WHERE date_format(FROM_UNIXTIME(`time`),'%Y%m')='201504'
还可以这样:
WHERE `TIME` BETWEEN UNIX_TIMESTAMP('2015-04-01 00:00:00') AND UNIX_TIMESTAMP('2015-04-30 23:59:59')
如果数据量特别多,后一种方式的查询速度更快,前提的`time`字段有索引。
这个time()函数是将时间保存成时间戳格式,则要查当月数据,只要查当月第一天到当月最后一天的之间的数据即可。
假设这个用来判断的字段是date
sql语句
SELECT ………… WHERE………… `date` = 本月第一天的time值 AND `date` 下个月第一天的time值
所以这里就只要获取当月第一天以及下个月第一天的时间戳
具体如下:
?php
$cur = date('Y-m',time());//当天年月
$cur_y = date('Y',time());//当天年份
$cur_m = date('m',time());//当天月份
$cur_f = $cur . '-1';//本月首日
$first = strtotime($cur_f);//时间戳最小值,本月第一天时间戳
//下月首日
if($cur_m=12){
$cur_n = ($cur_y+1) . '-1-1';
}else{
$cur_n = $cur_y . '-' . ($cur_m+1) . '-1';
}
$last = strtotime($cur_n);//时间戳最大值,下个月第一天时间戳
?
再把$first 和 $last 放入sql语句里面就可以查询到数据了
求本周的开始和结束时间
$w = date('w',time()) - 1;
$start_time = time() - $w * 60 * 60 * 24; //星期一的时间戳
$end_time = time() + (6 - $w) * 60 * 60 * 24; //星期天的时间戳
M('tablename')-where("create_time = {$start_time} and create_time = $end_time")-select();
月份的也很简单了,求出本月开始和结束的时间,然后在根据时间查询就可以了
设你的存储字段名为 your_column
其实很简单,如果你的存放时间的字段是datetime
直接
where your_column'".date('Y-m-d',time())." 00:00:00';就好了
如果使用的unix时间戳,用整数存储的
就这样
$day_begin=strtotime(date('Y-m-d',time()));
然后
where your_column".$day_begin." 就好了
//当天时间
$where['time'] = array(
array('egt',strtotime(date('Y-m-d',time())),
array('lt',strtotime(date('Y-m-d',time())).'+1 day')
);
// 本周时间
$where['time'] = array(
array('egt',strtotime(date('Y-m-d',time())).'-'.date('w',time()).' day'),
array('lt',strtotime(date('Y-m-d',time())).'+1 week -'.date('w',time()).' day');
);
// 本月时间
$where['time'] = array(
array('egt',strtotime(date('Y-m',time()))),
array('lt',strtotime(date('Y-m',time()).'+1 month'))
);
// 本年时间
$where['time'] = array(
array('egt',strtotime(date('Y',time()))),
array('lt',strtotime(date('Y',time()).'+1 year'))
);
上面是查询条件,直接运用到查询语句就可以了
$result = $db-where($where)-select();
更正下上面的那个 本年 查询时间
$where['time'] = array(
array('egt',strtotime(date('Y-01-01',time())),
array('lt',strtotime(date('Y-01-01',time()).'+1 year'))
);
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流