使用 mysql 统计日期范围的数据条数

news/2024/10/24 7:22:08/

需求:

查询2019-08到2019-09所有数据

解决方法

方式一:

select 
CONCAT(YEAR(s1.Date),'-',RIGHT(MONTH(s1.Date)+100,2)) as Month,
SUM(f1.Payment) as TicketsRevenue,
COUNT(DISTINCT s1.ScheduleId) as FlightsAmount,
COUNT(f1.ReservationId) as TicketsAmount
FROM `schedule` as s1
left join flightreservation as f1 ON s1.ScheduleId = f1.ScheduleId
WHERE (s1.Date > '2019-08-01' and s1.Date < '2019-09-30') and s1.Status` = 'Confirmed'
GROUP BY YEAR(s1.Date),MONTH(s1.Date)

缺点:只能在mysql5.7中使用

CONCAT(YEAR(s1.Date),'-',RIGHT(MONTH(s1.Date)+100,2)) as Month 作用:

  1. YEAR(s1.Date):这部分代码返回字段 s1.Date 的年份部分。YEAR() 是一个SQL函数,用于提取日期> 字段的年份。
  2. MONTH(s1.Date)+100:这部分代码返回字段 s1.Date 的月份部分,并加上 100。这是为了确保即使
    月份是一位数,也能保留两位数的格式。例如,如果月份是 5,加上 100 后得到 105。
  3. RIGHT(MONTH(s1.Date)+100,2):这部分代码返回上一步结果的最右两位数,即提取月份的后两位 > 数。RIGHT() 是一个SQL函数,用于返回字符串的最右边的指定位数。
  4. CONCAT(YEAR(s1.Date),‘-’,RIGHT(MONTH(s1.Date)+100,2)):这部分代码将年份和月份拼接起 > 来, 中间用短横线分隔。CONCAT() 是一个SQL函数,用于将多个字符串拼接成一个字符串。

综合起来,这段代码的作用是将日期字段 s1.Date 的年份和月份拼接成一个表示月份的字符串,格式 > 为 YYYY-MM。例如,如果 s1.Date 的值是 2019-08-15,那么 Month 字段的值将是 2019-05。

方式二(推荐):

SELECT DATE_FORMAT(s1.Date, '%Y-%m') as Month,SUM(f1.Payment) as TicketsRevenue,COUNT(DISTINCT s1.ScheduleId) as FlightsAmount,COUNT(f1.ReservationId) as TicketsAmount
FROM `schedule` as s1
LEFT JOIN flightreservation as f1 ON s1.ScheduleId = f1.ScheduleId
WHERE (s1.Date BETWEEN '2019-08-01' AND  LAST_DAY('2019-09-01')) AND s1.Status = 'Confirmed'
GROUP BY DATE_FORMAT(s1.Date, '%Y-%m')

其中
DATE_FORMAT(s1.Date, '%Y-%m') as Month 表示查询年份-月份
DATE_FORMAT函数作用:获取月份和年份的组合字符串
LAST_DAY函数表示返回当前 date 或 datetime 类型值对应月份的最后一天。

注意:上面的Date都是表中的字段

方式三:

SELECT
DATE_FORMAT(s1.Date, '%Y-%m') as Month,
SUM(f1.Payment) as TicketsRevenue,
COUNT(DISTINCT s1.ScheduleId) as FlightsAmount,
COUNT(f1.ReservationId) as TicketsAmount
FROM
schedule as s1
LEFT JOIN flightreservation as f1 ON s1.ScheduleId = f1.ScheduleId
WHERE
(s1.Date > '2019-08-01'
AND s1.Date < '2019-09-30')
AND s1.Status = 'Confirmed'
GROUP BY
DATE_FORMAT(s1.Date, '%Y-%m')

扩展

统计当月所遇数据条数:

SELECT * FROM schedule WHERE `date` like '2022-03%'

这里为了便于区别就使用 date字段(表中)

附件

参考1:https://www.sunzhongwei.com/mysql-query-date-type-fields-in-a-month
参考2:MySQL8.0中的日期类数据及其函数


http://www.ppmy.cn/news/211402.html

相关文章

Spring Boot 加载自定义配置文件

文章目录 一、为什么需要加载自定义配置文件二、使用PropertySource加载自定义配置文件&#xff08;一&#xff09;创建Spring Boot项目&#xff08;二&#xff09;创建自定义配置文件&#xff08;三&#xff09;创建自定义配置类&#xff08;四&#xff09;编写测试方法&#…

React.memo()、userMemo 、 userCallbank的区别及使用

本文是对以下课程的笔记输出&#xff0c;总结的比较简洁&#xff0c;若大家有不理解的地方&#xff0c;可以通过观看课程进行详细学习&#xff1b; React81_React.memo_哔哩哔哩_bilibili React76_useEffect简介_哔哩哔哩_bilibili React136_useMemo_哔哩哔哩_bilibili Rea…

本地JSON格式化工具下载

三年前做开发的时候用的这个&#xff0c;非常好用&#xff1a; JsonView&#xff1a; 下载地址&#xff1a;https://pan.baidu.com/s/1pLJumGb https://blog.csdn.net/u010429286/article/details/78857302

微信小程序开发工具下载安装

登录官方文档&#xff1a;https://developers.weixin.qq.com/doc/ 点击小程序进入小程序页面&#xff0c;然后点击开发再点击工具进入工具页面。 点击下载&#xff0c;下载稳定版。&#xff08;其他版本也可用&#xff0c;只是不稳定&#xff0c;建议下载稳定版&#xff09;

前端工具下载

前端工具下载 git 下载 https://npm.taobao.org/mirrors/git-for-windows/ 选择Git-xxx-64-bit.exe 文件 vscode 下载官网https://code.visualstudio.com/ 获取到文件下载地址&#xff0c;将/stable地址之前的地址换为如下内容&#xff1a;http://vscode.cdn.azure.cn /stable…

MRT(MODIS Reprojection Tool) 工具下载及安装教程

MRT(MODIS Reprojection Tool) 工具下载及安装教程 数据下载 链接&#xff1a;https://pan.baidu.com/s/1DKUlQ9AULG2p6-wFjqbatQ 提取码&#xff1a;8fiw 安装步骤 ①点击mrt_install.bat 出现以下界面 ②点击任意键&#xff0c;出现以下界面。输入要安装 MRT 的绝对路径…

利用浏览器开发者工具下载歌曲

利用浏览器F12下载音乐 翻出了老旧的账号&#xff0c;别看码龄2年&#xff0c;其实一点啥也不会&#xff0c;目前扎进学习中&#xff0c;以此记录学习过程 最近学习了浏览器开发者控制台&#xff0c;快捷键F12 红框所示 接下来实战如何在没有会员的情况下、下载VIP才能下载的…

Android启动之生命周期流程

目录 一、简述 二、启动流程说明(一) 三、启动流程说明(二) 四、ServerThread常用组件的功能介绍 一、简述 第一步&#xff1a;启动Linux&#xff1a; 1.Bootloader 2.kernel 第二步&#xff1a;Android系统启动&#xff1a;入口为Init.rc(system/core/rootdir) 1./sy…