时间连续处理函数(PHP)
2014-09-03 11:28
381 查看
前几天看他人项目代码,有一功能为统计最近1月某功能的使用总量,代码实现竟然不做时间连续处理,出现下面情形。
N星期前,也曾看到部分代码,时间连续处理竟然是以一天为时间间隔查询数据库,最近1月的统计竟然需要查询30+次。
在此列一下按照日统计数据的sql和自己写的一个时间连续处理函数.
1.测试表为
test
字段1:increase(int型,表每天增加)
字段2:optime(int型,为时间戳,表示记录增加时间)
--按日查询--
按月查询+按年查询 用month和year函数即可。
2.时间连续处理函数
测试如下
结果
还有一个需注意的地方
结果是:2012-03-01 因为-1 month的实际实现就是-30天而已,这个应该是个BUG吧。 可以用下面方式来实现:
大小: 9.3 KB
查看图片附件
N星期前,也曾看到部分代码,时间连续处理竟然是以一天为时间间隔查询数据库,最近1月的统计竟然需要查询30+次。
在此列一下按照日统计数据的sql和自己写的一个时间连续处理函数.
1.测试表为
test
字段1:increase(int型,表每天增加)
字段2:optime(int型,为时间戳,表示记录增加时间)
--按日查询--
$start = strtotime('2012-02-21'); $end = strtotime('2012-03-03'); $sql="select date(optime) as time , sum(increase) as increase from test where optime between {$start} and {$end} group by date(optime)";
按月查询+按年查询 用month和year函数即可。
2.时间连续处理函数
/** * @param $start 开始时间戳 * @param $end 结束数据戳 * @param $array 查询结果 * @return array dateMap数据 */ function dateMap($start,$end,$array){ $dates = range($start, $end, 24*60*60); $dates = array_map(create_function('$v', 'return date("Y-m-d", $v);'), $dates); $zero = array_fill_keys($dates,0); $result = array_merge($zero,$array); return $result; }
测试如下
$start = strtotime('2012-02-21'); $end = strtotime('2012-03-03'); $other=array('2012-02-25'=>20,'2012-02-21'=>30,'2012-03-01'=>40,'2012-02-27'=>50);
结果
Array ( [2012-02-21] => 30 [2012-02-22] => 0 [2012-02-23] => 0 [2012-02-24] => 0 [2012-02-25] => 20 [2012-02-26] => 0 [2012-02-27] => 50 [2012-02-28] => 0 [2012-02-29] => 0 [2012-03-01] => 40 [2012-03-02] => 0 [2012-03-03] => 0 )
还有一个需注意的地方
$end=strtotime('2012-03-30'); $start=strtotime('-1 month',$end); echo date('Y-m-d',$start);
结果是:2012-03-01 因为-1 month的实际实现就是-30天而已,这个应该是个BUG吧。 可以用下面方式来实现:
$start=strtotime('-1 month',strtotime(date('Y-m-01 00:00:00',$end))); echo date('Y-m-d',$start);
大小: 9.3 KB
查看图片附件
相关文章推荐
- php时间处理函数
- 仿php的日期函数,asp时间处理函数
- php时间处理函数
- php 常用日期处理函数,时间戳处理函数等,如下讲解
- php时间处理函数
- php 时间处理常用函数
- pgsql数据库和PHP中日期、时间戳处理函数
- php 日期时间处理函数小结
- PHP date函数常用时间处理方法
- PHP date函数常用时间处理方法
- Php处理时间的函数
- highcharts 处理时间不连续的图表封装函数
- php时间处理函数两则
- php--常用的时间处理函数
- PHP时间处理函数
- php 时间处理函数--获取某个间隔前的日期
- PHP - strtotime time FROM_UNIXTIME UNIX_TIMESTAMP 常用的时间&时间戳处理函数
- 仿php的日期函数,asp时间处理函数
- PHP - Manual手册 - CXLIX. Session 会话处理函数 - session.save_path 定义了传递给存储处理器的参数