thinkphp:查询本周中每天中日期的数据,查询今年中每个月的数据,查询近五年每年的总数据

一、查询本周中每天中日期的数据

结果:

以今天2023-09-14为例,这一周为2023-09-11~2023-09-07

代码

后端thinkphp: 

//查询本周每天的的总金额数
//获取本周的起始日期和结束日期
$weekStart = date('Y-m-d', strtotime('this week Monday'));
$weekEnd = date('Y-m-d', strtotime('this week Sunday'));
// 构造日期范围数组(从周一到周天)
$dateRange = [];
$currentDate = $weekStart;
while ($currentDate <= $weekEnd) {$dateRange[] = $currentDate;$currentDate = date('Y-m-d', strtotime($currentDate . ' +1 day'));
}
// 查询每天的总金额数
$result = Db::table('so_headers_all')->field("DATE_FORMAT(FROM_UNIXTIME(creation_date), '%Y-%m-%d') AS date, IFNULL(SUM(order_all_amount), 0) AS total_amount")->whereTime('creation_date', '>=', $weekStart)->whereTime('creation_date', '<=', $weekEnd)->group('date')->select();
// 构造最终结果数组
$resultArray = [];
foreach ($dateRange as $date) {$found = false;foreach ($result as $row) {if ($row['date'] == $date) {$resultArray[] = $row;$found = true;break;}}if (!$found) {$resultArray[] = ['date' => $date, 'total_amount' => 0];}
}
$data['week_info'] = $resultArray;

扩展:增加星期

结果

代码

后端thinkphp: 

//查询本周每天的的总金额数
//获取本周的起始日期和结束日期
$weekStart = date('Y-m-d', strtotime('this week Monday'));
$weekEnd = date('Y-m-d', strtotime('this week Sunday'));
// 构造日期范围数组(从周一到周天)
$dateRange = [];
$currentDate = $weekStart;
while ($currentDate <= $weekEnd) {$dateRange[] = $currentDate;$currentDate = date('Y-m-d', strtotime($currentDate . ' +1 day'));
}
// 查询每天的总金额数
$result = Db::table('so_headers_all')->field("DATE_FORMAT(FROM_UNIXTIME(creation_date), '%Y-%m-%d') AS date, IFNULL(SUM(order_all_amount), 0) AS total_amount")->whereTime('creation_date', '>=', $weekStart)->whereTime('creation_date', '<=', $weekEnd)->group('date')->select();
//去掉逗号,转换为
foreach ($result as &$item) {// $item['total_amount'] = intval(($item['total_amount'] / 10000));$item['total_amount'] = round(($item['total_amount'] / 10000),2);
}
// 构造最终结果数组
$resultArray = [];
$dateArray = [];
$totalAmountArray = [];
$weekdays = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];foreach ($dateRange as $date) {$found = false;foreach ($result as $row) {if ($row['date'] == $date) {$weekdayIndex = date('w', strtotime($row['date']));$row['name'] = $weekdays[$weekdayIndex];$resultArray[] = $row;$dateArray[] = $row['date'];$totalAmountArray[] = $row['total_amount'];$found = true;break;}}if (!$found) {$weekdayIndex = date('w', strtotime($date));$resultArray[] = ['date' => $date, 'total_amount' => 0, 'name' => $weekdays[$weekdayIndex]];$dateArray[] = $date;$totalAmountArray[] = 0;}
}
$data['week_info']['date'] = $dateArray;
$data['week_info']['total_amount'] = $totalAmountArray;
$data['week_info1'] = $resultArray;
echo json_encode($data);

二、查询今年中每个月的数据

结果

代码

//查询今年中每月的总金额数据
// 获取当前年份
$year = date('Y');
$result1 = Db::table('so_headers_all')->field("DATE_FORMAT(FROM_UNIXTIME(creation_date), '%Y-%m') AS month, IFNULL(SUM(order_all_amount), 0) AS total_amount")->whereTime('creation_date', '>=', strtotime($year . '-01-01'))->whereTime('creation_date', '<=', strtotime($year . '-12-31'))->group('month')->select();
//去掉逗号,转换为
foreach ($result1 as &$item) {$item['total_amount'] = round(($item['total_amount'] / 10000),2);
}
// 构造最终结果数组
$dateArray1 = [];
$totalAmountArray1 = [];
for ($i = 1; $i <= 12; $i++) {//str_pad 函数用于在字符串的左侧(或右侧)填充指定字符,达到指定长度。这里,使用 str_pad 函数在 $i 左侧填充字符 '0',直到 $i 的长度达到 2。$month = str_pad($i, 2, '0', STR_PAD_LEFT);$dateArray1[] = $year . '-' . $month;$totalAmountArray1[$year . '-' . $month] = 0;
}
// 将查询结果填充到对应的月份位置
foreach ($result1 as $item) {$totalAmountArray1[$item['month']] = $item['total_amount'];
}
// 最终结果数组
foreach ($dateArray1 as $date) {$finalResult[] = ['date' => $date,'total_amount' => $totalAmountArray1[$date]];$data['month_info']['date'][] = $date;$data['month_info']['total_amount'][] = $totalAmountArray1[$date];
}

三、查询近五年每年的总数据

结果

代码

//查询近五年总金额数据
// 获取当前年份
$currentYear = date('Y');
// 构造最终结果数组
$data['year_info']['date'] = [];
$data['year_info']['total_amount'] = [];for ($i = $currentYear - 4; $i <= $currentYear; $i++) {$year = (string) $i;$result = Db::table('so_headers_all')->field("IFNULL(SUM(order_all_amount), 0) AS total_amount")->whereTime('creation_date', '>=', strtotime($year . '-01-01'))->whereTime('creation_date', '<=', strtotime($year . '-12-31'))->find();$totalAmount = round(($result['total_amount'] / 10000), 2);$data['year_info']['date'][] = $year;$data['year_info']['total_amount'][] = $totalAmount;
}
echo json_encode($data);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT--使用百度地图API显示地图并绘制路线】

QT--使用百度地图API显示地图并绘制路线 前言准备工作申请百度地图密钥(AK)安装开发环境 开发过程新建项目ui界面GPSManager类主窗口Map 效果展示 前言 先吐槽一下下&#xff0c;本身qt学的就不咋滴&#xff0c;谁想到第一件事就是让写一个上位机工具&#xff0c;根据CAN总线传…

x86架构基础汇编知识

​ 通用寄存器 EAX 32位 函数返回值 AX 低16位 AH 高八位 AL 低八位 EBX 32位 ECX 32位 循环次数&#xff0c;this指针 EDX 32位 EBP 32位 栈底寄存器 ESP 32位 栈顶寄存器 ESI 源索引寄存器 EDI 目标索引寄存器 EIP 无法直接通过汇编操作 例子 mov al&#xff0c;0xff …

python 第一次作业

1.使用turtle换一个五环 2.设计这样一个程序&#xff1a;输入一个数字 判断它是不是一个质数 使用turtle换一个五环&#xff1a; >>> import turtle #导入模块 >>> turtle.width(10) #设置圆圈宽度 >>> turtle.color("blue&qu…

Tomcat7+ Weak Password Backend Getshell Vulnerability

漏洞描述 Tomcat 支持通过后端部署 war 文件&#xff0c;所以我们可以直接将 webshell 放入 Web 目录下。为了访问后端&#xff0c;需要权限。 Tomcat7 的权限如下&#xff1a; 经理&#xff08;后台管理&#xff09; 管理器-GUI&#xff08;HTML 页面的权限&#xff09;管理…

WMS系统库存条码管理

1. 定义 库存条码管理是WMS系统中的一项关键功能&#xff0c;通过对仓库内货物进行条码标识和管理&#xff0c;实现对库存的精确追踪和控制。库存条码可以是一维条码&#xff08;如条形码&#xff09;或二维条码&#xff08;如QR码&#xff09;&#xff0c;用于唯一标识和识别…

华为数通方向HCIP-DataCom H12-821题库(单选题:361-380)

第361题 如图所示是一台路由器的BGP输出信息。那么以下关于这段信息的描述,错误的是哪一项? <Huawei>display bgp error Error Type: Peer Error Peer Address:10.1.1.2 VRFName:Public Error Info: Router-ID conflictA、该路由器邻居地址是10.1.1.2 B、Error Type显…

SpringBoot2.0(mybatis-plus常见的增删改查和分页)

目录 一&#xff0c;mybatis-plus常见注解二&#xff0c;创建一个工具类和启动类三&#xff0c;创建实体类四&#xff0c;创建mapper接口五&#xff0c;创建service接口和impl类六&#xff0c;创建配置类七&#xff0c;创建controller八&#xff0c;使用测试工具测试增删改查和…

Reids Cluster集群部署

服务器端口说明 vim /etc/hosts 1.下载、解压、编译Redis $ mkdir -p /opt/redis && cd /opt/redis $ wget http://download.redis.io/releases/redis-6.0.6.tar.gz $ tar xzf redis-6.0.6.tar.gz 请先检查gcc的版本是否低于5&#xff0c;如果是请先升级&#xff0c…

听GPT 讲Istio源代码--pilot(7)

File: istio/pilot/pkg/model/log.go 在Istio项目中&#xff0c;istio/pilot/pkg/model/log.go文件的作用是定义了Istio Pilot的日志记录功能。 该文件中定义了一个名为log的全局日志记录器&#xff0c;并且还定义了一些与日志记录相关的变量&#xff0c;如verbose、verboseCou…

幸福里基于 Flink Paimon 的流式数仓实践

摘要&#xff1a;本文整理自字节跳动基础架构工程师李国君&#xff0c;在 Streaming Lakehouse Meetup 的分享。幸福里业务是一种典型的交易、事务类型的业务场景&#xff0c;这种业务场景在实时数仓建模中遇到了诸多挑战。本次分享主要介绍幸福里业务基于 Flink & Paimon …

Linux日志管理-logrotate(crontab定时任务、Ceph日志转储)

文章目录 一、logrotate概述二、logrotate基本用法三、logrotate运行机制logrotate参数 四、logrotate是怎么做到滚动日志时不影响程序正常的日志输出呢&#xff1f;Linux文件操作机制方案一方案二 五、logrotate实战--Ceph日志转储参考 一、logrotate概述 logrotate是一个用于…

数据结构--哈希表,哈希函数(或者散列表、散列函数)

目录 哈希表的定义 处理冲突的方法--拉链法 散列查找 常见的散列函数&#xff08;构造哈希函数&#xff09; 除留余数法 直接定址法 数字分析法 平方取中法 处理冲突的方法--开放定址法 &#xff08;1&#xff09;线性探测法&#xff1a; &#xff08;2&#xff09…

mall商城项目:只启动mall-admin情况下Windows环境的部署

文章目录 前提ideaMysql创建数据库mall,导入项目document/sql文件夹下的mall.sql文件,初始化数据RedisPostMan登录接口测试运行前提 mall项目gitee 如果项目只启动mall-admin,仅需安装MySQL、Redis即可 idea IDEA的安装与使用请参考搜索插件仓库,安装插件Lombok;将项目下…

速腾聚创80线激光雷达ros驱动安装

1. 激光雷达硬件连接 1.1 工具准备 1.2 硬件连接 设置PC Ubuntu1804静态IP&#xff0c;速腾聚创16线激光雷达出厂默认发送到192.168.1.102&#xff0c;在连接前可以通过wireshark抓包工具进行检测&#xff1b; sudo wireshark 正常发送UDP数据流才算正常接入&#xff01; 2. 软…

C语言入门Day_22 初识指针

目录 前言&#xff1a; 1.内存地址 2.指针的定义 3.指针的使用 4.易错点 5.思维导图 前言&#xff1a; 之前我们学过变量可以用来存储数据&#xff0c;就像一个盒子里面可以放不同的球一样。 这是一个方便大家理解专业概念的比喻。 在计算机世界里面&#xff0c;数据实…

怎么防止360安全卫士修改默认浏览器?

默认的浏览器 原先选项是360极速浏览器&#xff08;如果有安装的话&#xff09;&#xff0c;我这里改成了Chrome。 先解锁 才能修改。

千巡翼X1 让航测无人机更小更轻更高效

利用无人机进行航空摄影测量&#xff0c;已成为测绘外业生产的主要方式&#xff0c;不仅方便快捷&#xff0c;更能全面准确获得成果。近年来&#xff0c;凭借快速高效、机动灵活、安全可靠、低成本等诸多优势&#xff0c;小型多旋翼无人机逐渐成为一些航测项目作业的新利器。 千…

Redis——渐进式遍历和数据库管理命令

介绍 如果使用keys * 这样的操作&#xff0c;将Redis中所有的key都获取到&#xff0c;由于Redis是单线程工作&#xff0c;这个操作本身又要消耗很多时间&#xff0c;那么就会导致Redis服务器阻塞&#xff0c;后续的操作无法正常执行 而渐进式遍历&#xff0c;通过多次执行遍历…

【PowerQuery】PowerBI Pro账户的自动刷新

在数据和模型通过发布或者上传方式上传到PowerBI Pro中,如何来进行数据刷新呢?数据源依然在本地,而数据模型已经发布到PowerBI Pro云端服务中。如果数据源更新,我们的模型如何进行自动刷新呢? PowerBI Pro如果需要基于本地数据源更新进行模型更新需要部署相应的数据网关服…

智能合约漏洞案例,Euler Finance 1.96 亿美元闪电贷漏洞分析

智能合约漏洞案例&#xff0c;Euler Finance 1.96 亿美元闪电贷漏洞分析 2023 年 3 月 13 日上午 08:56:35 UTC&#xff0c;DeFi 借贷协议 Euler Finance 遭遇闪电贷攻击。 Euler Finance 是一种作为无许可借贷协议运行的协议。其主要目标是为用户提供各种加密货币的借贷便利。…