统计本周的订单数,统计最近7天的订单数

3个函数

DATE_SUB和SUBDATE在MySQL中的作用是一样的,它们都是用于执行日期的减法运算。具体来说,这两个函数都允许你从给定的日期或日期时间值中减去一个指定的时间间隔,然后返回一个新的日期或日期时间值。

DATE函数

DATE(time) 用于获取当前字段的日期 2024-09-26

DATE_SUB函数

DATE_SUB函数的基本语法如下:

DATE_SUB(date, INTERVAL expr type)
  • date:是一个日期或日期时间表达式,表示起始日期。
  • INTERVAL:是MySQL中的关键字,用于指示接下来的部分是一个时间间隔。
  • expr:是一个数值表达式,表示要减去的时间间隔的数量。
  • type:是时间间隔的单位,如YEAR、MONTH、DAY、HOUR等。

这个函数允许你根据需要,在日期或日期时间字段中减去年、月、日、小时、分钟或秒钟等时间单位。

SUBDATE函数

SUBDATE函数的语法与DATE_SUB函数非常相似,也用于执行日期的减法运算:

SUBDATE(date, INTERVAL expr unit)
  • date:同样表示起始日期。
  • INTERVAL:也是指示时间间隔的关键字。
  • expr:表示要减去的时间间隔的数量,可以是数字、表达式或函数。
  • unit:是时间间隔的单位,如DAY、MONTH等。

SUBDATE函数的具体用法与DATE_SUB非常接近,都允许你从给定的日期中减去指定的时间间隔。



订单表建表语句(只需关注checkout_time) 

-- auto-generated definition
create table orders
(id                   varchar(32)    default ''     not null comment '主键-订单号'primary key,status               int            default 1      not null comment '订单状态 1待付款,2待接单,3待派送,4待取餐,5已派送,6已完成,7已取消,8外卖待审批,9堂食待审批',member_id            varchar(32)    default ''     not null comment '下单用户',address_book_id      varchar(32)    default ''     not null comment '地址id',order_time           datetime                      null comment '下单时间',shop_id              varchar(32)    default ''     not null comment '所属店铺',checkout_time        datetime                      null comment '结账时间',pay_method           int            default 1      not null comment '支付方式 1微信,2支付宝',pickup_code          varchar(16)    default '0000' not null comment '取餐码(四位数)',amount               decimal(10, 2) default 0.00   not null comment '实收金额',remark               varchar(100)   default ''     not null comment '备注',phone                varchar(13)    default ''     not null comment '收件人手机号',address              varchar(255)   default ''     not null comment '收件地址',consignee            varchar(255)   default ''     not null comment '收货人姓名',type                 varchar(1)     default '1'    not null comment '0-外卖 1-堂食',cancel_reason        varchar(32)    default ''     not null comment '取消下单原因(管理端)',cancel_reason_member varchar(32)    default ''     not null comment '取消下单原因',reject_cancel_reason varchar(32)    default ''     not null comment '商家拒绝用户取消下单的原因',rejection_reason     varchar(32)    default ''     not null comment '拒单原因(管理端)'
)comment '订单表';

统计最近7天的订单数

SELECT CURRENT_DATE();

2024-09-26


SELECT DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY);

2024-09-19

  • DATE_SUB是MySQL中的一个日期函数,用于从当前日期(CURRENT_DATE())减去一个时间间隔。
  • DATE_SUB()函数接受两个参数:第一个参数是要被减去时间间隔的日期,第二个参数是要减去的时间间隔。
  • 在这个例子中,时间间隔是INTERVAL 7 DAY,表示7天。
  • 因此,DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)计算的是当前日期之前的7天(即7天前的日期)。


SELECT *  
FROM orders  
WHERE checkout_time BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND CURRENT_DATE();



统计本周的订单数

周几

周一

周二

周三

周四

周五

周六

周日

WEEKDAY(CURRENT_DATE())的值

0

1

2

3

4

5

6


SELECT WEEKDAY(CURRENT_DATE()) today_value;

SELECT WEEKDAY(SUBDATE(CURRENT_DATE(),INTERVAL 4 DAY)) today_minus_4day_value;



情况1:周一为一周的开始

周一到今天 

SELECT *  
FROM orders  
WHERE DATE(checkout_time) BETWEEN  -- 本周的第一天(周一)  SUBDATE(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY)  -- 今天  AND DATE(CURDATE());

完整的一周(周一到周日) 

SELECT *  
FROM orders  
WHERE DATE(checkout_time) BETWEEN  -- 本周的第一天(周一)  SUBDATE(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY)  -- 本周的最后一天(周日)  AND SUBDATE(CURDATE(), WEEKDAY(CURDATE()) - 6);

情况2:周日为一周的开始

周日到今天 

SELECT *  
FROM orders  
WHERE 
-- 情况1 今天非周日 则需要包括今天到上个周日
(WEEKDAY(CURDATE())!=6 AND DATE(checkout_time) 
BETWEEN  -- 本周的第一天(上个周日,如果今天是周日的话只有今天一天,即下面那种情况)  SUBDATE(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) + 1) DAY)  -- 今天  AND DATE(CURDATE())
)
OR
-- 情况2 今天是周日 即只有今天一天
(WEEKDAY(CURDATE())=6 and DATE(checkout_time)=DATE(CURDATE()));

完整的一周(周日到周六) 

SELECT *  
FROM orders  
WHERE 
-- 情况1 今天非周日 则需要包括今天到上个周日
(WEEKDAY(CURDATE())!=6 AND DATE(checkout_time) 
BETWEEN  -- 本周的第一天(上个周日,如果今天是周日的话只有今天一天,即下面那种情况)  SUBDATE(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) + 1) DAY)  -- 本周的最后一天(这周六)  AND SUBDATE(CURDATE(),INTERVAL (WEEKDAY(CURDATE()) - 5) DAY)
)
OR
-- 情况2 今天是周日 即只有今天一天
(WEEKDAY(CURDATE())=6 and DATE(checkout_time)=DATE(CURDATE()));

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

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

相关文章

多机部署,负载均衡-LoadBalance

文章目录 多机部署,负载均衡-LoadBalance1. 开启多个服务2. 什么是负载均衡负载均衡的实现客户端负载均衡 3. Spring Cloud LoadBalance快速上手使用Spring Cloud LoadBalance实现负载均衡修改IP,端口号为服务名称启动多个服务 负载均衡策略自定义负载均衡策略 LoadBalance原理…

图像处理04

图像处理 问题:把不规则的图片按照参考图摆放 步骤: 1. 用ORB找关键点 2. 关键点匹配 3. 根据上一步匹配的关键点得出单应性矩阵 4. 根据单应性矩阵对不规则进行透视变换 import cv2 import numpy as np import matplotlib.pyplot as pltimgl cv2.imrea…

liunxcentos7下 跟目录空间不足docker load镜像报错空间不足

前两天在公司,做jenkins流水线项目,然后把项目放到docker容器里面运行,就在我把镜像打好包的时候正准备往服务器里面导入镜像的时候报错:如图所示 这时发现自己的根目录空间不足。 解决办法:重新加一块磁盘将磁盘挂载…

Java线程池和原子性

文章目录 前言1 线程池1.1 线程池概述1.1.1 线程池存在的意义1.1.2 Executors默认线程池 1.2 线程状态介绍1.2.1 线程状态源码1.2.2 线程状态含义1.2.3 线程状态转换图 2 原子性2.1 volatile关键字2.2 synchronized解决2.3 原子性2.4 AtomicInteger类2.5 悲观锁和乐观锁 前言 …

Vue 响应式监听 Watch 最佳实践

一. 前言 上一篇文章我们学习了 watch 的基础知识,了解了它的基本使用方法及注意事项,本篇文章我们继续了解在Vue 中 响应式监听 watch 的妙用。了解 watch 的基础使用请参考上一篇文章: 详解 Vue 中 Watch 的使用方法及注意事项https://bl…

【Docker】02-数据卷

1. 数据卷 数据卷(volume) 是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。 2. 常见命令 docker volume createdocker volume lsdocker volume rmdocker volume inspect 查看某个数据卷的详情docker volume prune 清除数据卷 **数据卷挂载&#xff1a…

bench.sh:一行命令测试Linux服务器基准测试

简介 bench.sh 是一个 Linux 系统性能基准测试工具。它的测试结果如下图:给出服务器的整体配置信息,IO 性能,网络性能。很多人使用它测试 vps 性能。 ​​ 一键运行 服务器在国外可以使用以下命令运行测试 wget -qO- bench.sh | bash复制…

微信小程序配置prettier+eslint

虽然微信开发者工具是基于vscode魔改的.但是由于版本过低,导致很多插件也用不上新版本.所以在微信开发者工具限制的版本下使用的prettier,eslint也是有版本要求. 本文主要就是记录一下需要的版本号 1.微信开发者工具安装插件 2.package.json中添加以下依赖及安装依赖 "de…

JVM(HotSpot):方法区(Method Area)

文章目录 一、内存结构图二、方法区定义三、内存溢出问题四、常量池与运行时常量池 一、内存结构图 1.6 方法区详细结构图 1.8方法区详细结构图 1.8后,方法区是JVM内存的一个逻辑结构,真实内存用的本地物理内存。 且字符串常量池从常量池中移入堆中。 …

云服务器连接不上是什么原因引起的?

云服务器连接不上是什么原因引起的?云服务器连接不上是一个常见的问题,常见的原因有网络连接、账户权限、安全组设置、服务器状态、端口占用、远程登录未开启、云服务器已关闭或到期、防护软件限制、DNS劫持、资源负载过高。以下是一些主要原因及解决方法…

微信小程序 - 最新详细安装使用 Vant weapp UI 框架环境搭建详细教程

前言 自从 2024 年开始,小程序做了很多改变和升级, 导致网上很多搭建教程文章的教程失效了,本文来做最新的教程。 第一步 为了更贴合新手,我这里创建了一个纯净无任何业务代码的小程序项目。

SpringBoot-全局处理异常,时间格式,跨域,拦截器,监听器

1.全局异常处理 使用ControllerAdvice与ExceptionHandler注解 /*** 全局异常处理程序** author * date */ ControllerAdvice ResponseBody public class GlobalExceptionHandler {ExceptionHandler(Exception.class)public JsonResult handleException(Exception e) {e.print…

Wireshark学习使用记录

wireshark 是一个非常好用的抓包工具,使用 wireshark 工具抓包分析,是学习网络编程必不可少的一项技能。 原理 Wireshark使用的环境大致分为两种:一种是电脑直连互联网的单机环境,另外一种就是应用比较多的互联网环境,也就是连接…

Windows下安装Neo4j流程

Neo4j简介 Neo4j 是一个基于图形结构的 NoSQL 数据库,专门用于存储和管理图数据。与传统的关系型数据库不同,Neo4j 使用 图(graph)的形式来表示数据,其中数据点(称为 节点)通过 边(…

分拆逆势上会,兴福电子部分专利来自母公司,独立性被拷问

作者:Cindy 来源:IPO魔女 公司拟募集资金12.10亿元,保荐机构为天风证券。兴福电子2023年5月就提交了上市申请,期间经历了2轮问询,一年多时间就开启上会。 然而值得注意的是,兴福电子属于分拆上市&#xff…

亚马逊IP关联揭秘:发生ip关联如何处理

在亚马逊这一全球领先的电商平台上,IP关联是一个不可忽视的问题,尤其是对于多账号运营的卖家而言。本文将深入解析亚马逊IP关联的含义、影响以及应对策略,帮助卖家更好地理解和应对这一问题。 什么是亚马逊IP关联? 亚马逊IP关联…

【最新华为OD机试E卷-支持在线评测】字符串变换最小字符串(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

MySQL练手题--日期连续类型(困难)

一、准备工作 Create table If Not Exists Failed (fail_date date); Create table If Not Exists Succeeded (success_date date); Truncate table Failed; insert into Failed (fail_date) values (2018-12-28); insert into Failed (fail_date) values (2018-12-29); inser…

MySQL---创建数据库(基于SQLyog)

目录 0.前言 1.基本认识 1.1编码集 1.2检验规则 2.库的创建和销毁 2.1指令介绍 2.2你可能会出现的问题 3.查看数据库属性 4.创建指定数据库 5.创建表操作 0.前言 之前写过一篇这个关于表的创建和销毁的操作,但是当时是第一次学习,肯定有些地方…

初识 C 语言(一)

目录 一、 第一个 C 程序1. printf() 函数和 stdio.h 头文件2. main() 函数和 return 语句 二、类型和变量1. C 语言中的基本类型2. 变量的创建和命名规则3. 类型和变量的大小 三、printf() 函数和 scanf() 函数1. printf() 函数的使用2. 各种类型的输出格式3. scanf() 函数的使…