十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这个time()函数是将时间保存成时间戳格式,则要查当月数据,只要查当月第一天到当月最后一天的之间的数据即可。
成都创新互联公司是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,微信平台小程序开发,10余年建站对成都发电机回收等多个方面,拥有丰富的网站推广经验。
假设这个用来判断的字段是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语句里面就可以查询到数据了
从你的结构可以看出,你的日期使用的是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`字段有索引。
$j = date("t"); //获取当前月份天数
$start_time = strtotime(date('Y-m-01')); //获取本月第一天时间戳
$array = array();
for($i=0;$i$j;$i++){
$array[] = date('Y-m-d',$start_time+$i*86400); //每隔一天赋值给数组
}
print_r($array);