可按日期分組,如:
創(chuàng)新互聯(lián)專注于中大型企業(yè)的網(wǎng)站制作、做網(wǎng)站和網(wǎng)站改版、網(wǎng)站營銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開發(fā)的融合,累計(jì)客戶上千,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對(duì)接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專注品牌網(wǎng)站制作和互聯(lián)網(wǎng)程序開發(fā),在前進(jìn)的路上,與客戶一起成長!
select?count(1)?from?table_name?group?by?date_format(date,'%y-%m-%d');
說明 : 統(tǒng)計(jì)每天數(shù)據(jù)量,table_name 表名 date 分組日期字段
從你的結(jié)構(gòu)可以看出,你的日期使用的是UNIX時(shí)間戳,不是數(shù)據(jù)庫的日期類型,這個(gè)可以使用函數(shù)FROM_UNIXTIME轉(zhuǎn)換為數(shù)據(jù)庫日期類型,然后使用date_format函數(shù)轉(zhuǎn)換為指定格式。也可以使用UNIX_TIMESTAMP函數(shù)把日期轉(zhuǎn)換為時(shí)間戳進(jìn)行比較。
例如:查詢本月的數(shù)據(jù)條件可以這樣寫:
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')
如果數(shù)據(jù)量特別多,后一種方式的查詢速度更快,前提的`time`字段有索引。
這個(gè)time()函數(shù)是將時(shí)間保存成時(shí)間戳格式,則要查當(dāng)月數(shù)據(jù),只要查當(dāng)月第一天到當(dāng)月最后一天的之間的數(shù)據(jù)即可。
假設(shè)這個(gè)用來判斷的字段是date
sql語句
SELECT ………… WHERE………… `date` = 本月第一天的time值 AND `date` 下個(gè)月第一天的time值
所以這里就只要獲取當(dāng)月第一天以及下個(gè)月第一天的時(shí)間戳
具體如下:
?php
$cur = date('Y-m',time());//當(dāng)天年月
$cur_y = date('Y',time());//當(dāng)天年份
$cur_m = date('m',time());//當(dāng)天月份
$cur_f = $cur . '-1';//本月首日
$first = strtotime($cur_f);//時(shí)間戳最小值,本月第一天時(shí)間戳
//下月首日
if($cur_m=12){
$cur_n = ($cur_y+1) . '-1-1';
}else{
$cur_n = $cur_y . '-' . ($cur_m+1) . '-1';
}
$last = strtotime($cur_n);//時(shí)間戳最大值,下個(gè)月第一天時(shí)間戳
?
再把$first 和 $last 放入sql語句里面就可以查詢到數(shù)據(jù)了
求本周的開始和結(jié)束時(shí)間
$w = date('w',time()) - 1;
$start_time = time() - $w * 60 * 60 * 24; ? ? ? ? //星期一的時(shí)間戳
$end_time = time() + (6 - $w) * 60 * 60 * 24; //星期天的時(shí)間戳
M('tablename')-where("create_time = ?{$start_time} and create_time = $end_time")-select();
月份的也很簡(jiǎn)單了,求出本月開始和結(jié)束的時(shí)間,然后在根據(jù)時(shí)間查詢就可以了
設(shè)你的存儲(chǔ)字段名為 your_column
其實(shí)很簡(jiǎn)單,如果你的存放時(shí)間的字段是datetime
直接
where your_column'".date('Y-m-d',time())." 00:00:00';就好了
如果使用的unix時(shí)間戳,用整數(shù)存儲(chǔ)的
就這樣
$day_begin=strtotime(date('Y-m-d',time()));
然后
where your_column".$day_begin." 就好了
//當(dāng)天時(shí)間
$where['time']?=?array(
array('egt',strtotime(date('Y-m-d',time())),
array('lt',strtotime(date('Y-m-d',time())).'+1?day')
);
//?本周時(shí)間
$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');
);
//?本月時(shí)間
$where['time']?=?array(
array('egt',strtotime(date('Y-m',time()))),
array('lt',strtotime(date('Y-m',time()).'+1?month'))
);
//?本年時(shí)間
$where['time']?=?array(
array('egt',strtotime(date('Y',time()))),
array('lt',strtotime(date('Y',time()).'+1?year'))
);
上面是查詢條件,直接運(yùn)用到查詢語句就可以了
$result?=?$db-where($where)-select();
更正下上面的那個(gè)?本年?查詢時(shí)間
$where['time']?=?array(
array('egt',strtotime(date('Y-01-01',time())),
array('lt',strtotime(date('Y-01-01',time()).'+1?year'))
);