十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
用户模块 在 phpcms/modules/member/member.php 92行左右!
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站建设、网站设计、东洲网络推广、小程序开发、东洲网络营销、东洲企业策划、东洲品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供东洲建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
代码贴下:
//默认选取一个月内的用户,防止用户量过大给数据造成灾难
$where_start_time = strtotime($start_time) ? strtotime($start_time) : 0;
$where_end_time = strtotime($end_time) + 86400;
//开始时间大于结束时间,置换变量
if($where_start_time $where_end_time) {
$tmp = $where_start_time;
$where_start_time = $where_end_time;
$where_end_time = $tmp;
$tmptime = $start_time;
$start_time = $end_time;
$end_time = $tmptime;
unset($tmp, $tmptime);
}
这个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语句里面就可以查询到数据了
从你的结构可以看出,你的日期使用的是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`字段有索引。
试试这个
select * from table1 where month(date)='您要查询的月份' order by date;
year(date) 即为年份
day(date) 顾名思义