利用时间维度统计分页

简介: 在进行数据统计的时候,不能简单的通过数据表数据条数进行分页。这时,可以通过时间维度进行分页。 //以时间作为查询条件进行用户统计查询 $start_date = request('date')['start'] ? : ''; $end_date = request('date')['end'].

在进行数据统计的时候,不能简单的通过数据表数据条数进行分页。这时,可以通过时间维度进行分页。

//以时间作为查询条件进行用户统计查询

$start_date = request('date')['start'] ? : '';
$end_date = request('date')['end'] ? : '';

//以时间维度降序排列

//分页的最后一条数据时间
if ($start_date) {
    $start_at = $start_date;
} else {
    //$min_date 查询录入用户表里最早一个用户的日期(这里使用的时间戳)
    $start_at = $min_date ? date('Y-m-d', strtotime($min_date)) : date('Y-m-d', time());
}

//分页的第一条数据时间
if ($end_date) {
    $end_at = $end_date;
} else {
    $end_at = date('Y-m-d', time());
}

//计算第一条数据和最后一条数据两个时间的天数差
$days = (strtotime($end_at) - strtotime($start_at)) / (24 * 60 * 60) + 1;

//分页
$page = request('page') ?: 1;//页码
$per_page = request('per_page') ?: 15;//每页显示的条数

$max_page = ceil($days / $per_page);//最大页数

//页码不在合理范围,返回原页面
if ($page <= 0 || $page > $max_page) {
    return back();
}

//每页循环开始数字
$per_start = ($page - 1) * $per_page + 1;
//每页循环结束数字
$per_end = $page * $per_page;
$per_end = ($per_end < $days) ? $per_end : $days;

$lists = [];
for ($i = $per_start - 1; $i < $per_end; $i++) {
    $date = date('Y-m-d', strtotime("{$end_at} -{$i} days"));
    //根据当天时间,作为查询条件,查询业务模型数据,将数据返回结果追加到 $lists 数组里
    ...
}

//最后将 $lists 返回到页面展示
目录
相关文章
|
Web App开发 前端开发 Android开发
前端预览PDF文件(使用PDFJS)
我准备出一篇文章来介绍一下如何使用 PDFJS 。
2289 0
前端预览PDF文件(使用PDFJS)
|
7月前
|
传感器 人工智能 物联网
智能鞋:从脚下开始的科技革命
智能鞋:从脚下开始的科技革命
475 6
|
SQL 数据处理 数据库
时序数据库 TDengine SQL 查询语法规则汇总,官方教程奉上!
TDengine 采用 SQL 作为查询语言,本文将就部分查询细则做分析。
1043 1
|
Android开发
Android 插件化
Android 插件化
198 0
|
存储 移动开发 定位技术
HTML5 Geolocation(地理定位)优化到最高精度
HTML5 Geolocation API 可让网页访问用户的地理位置信息。为优化地理定位精度,需考虑设备、浏览器设置、网络状况及编码实现。使用 `enableHighAccuracy` 选项请求高精度,并确保设备开启 GPS,网络良好。结合多种数据源(如 GPS、Wi-Fi)可提高准确性。利用 `watchPosition` 定期更新位置,并妥善处理定位错误。务必遵循用户隐私原则,获取同意并遵守相关法规。这样可有效提升地理定位的精度与用户体验。
RabbitMQ实现延迟消息居然如此简单,整个插件就完事了
RabbitMQ实现延迟消息的方式有两种,一种是使用死信队列实现,另一种是使用延迟插件实现。死信队列实现我们以前曾经讲过这次我们讲个更简单的,使用延迟插件实现。
|
算法
分布式系统中的那些一致性(CAP、BASE、2PC、3PC、Paxos、ZAB、Raft)
本文介绍 CAP、BASE理论的正确理解、Paxos 算法如何保证一致性及死循环问题、ZAB 协议中原子广播及崩溃恢复以及 Raft 算法的动态演示。
611 0
|
存储 JSON 数据可视化
Seata Saga 模式快速入门和最佳实践
本文主要介绍 Seata Saga 模式的使用以及最佳实践,围绕三个部分展开,第一部分是 Seata Saga 的简介、第二部分是带大家快速入门,学习怎么使用 Seata Saga 模式,最后一部分将会给大家分享一些 Seata Saga 实践中的经验,帮助用户更快、更好得使用 Seata Saga 模式。
Seata Saga 模式快速入门和最佳实践
|
存储 机器学习/深度学习 人工智能
一文解读机密容器的崛起和发展 | 龙蜥技术
阿里云和英特尔在龙蜥实现了基于 TDX 的机密容器端到端解决方案。
一文解读机密容器的崛起和发展 | 龙蜥技术
uniapp实现微信小程序横屏适配问题demo效果(整理)
uniapp实现微信小程序横屏适配问题demo效果(整理)