SQL语句查询指定年月份数据,统计某个月的数据~

232 阅读2分钟

你们好,我是金金金。

image.png

场景

  • 场景如下: 就拿微信记账本来说,有非常多类似以下一样的场景,需要统计某个月份的数据

image.png

前置

首先看下表结构,很简单其实就是一张交易记录表

image.png

我这里随便添加了几条数据

image.png

解决

非常简单, SQL如下:

select 
  id,
  wx_user_id,
  category_id,
  amount,
  remark,
  create_time
from cashbook_transaction
where 
  wx_user_id = 1 -- 用户ID
  and year(create_time) = 2025 -- 年份
  and month(create_time) = 02 -- 月份
order by create_time desc;
  • 2025-02:全部查出来了,符合预期

image.png

  • 2025-01:一条记录没有,符合预期

image.png

总结

  • 选择字段:选择了 idwx_user_idcategory_idamountremark, 和 create_time 这几个字段的数据。

  • 数据过滤

    • wx_user_id = 1 表示只选取 wx_user_id 等于 1 的记录,这通常意味着只获取特定用户的数据;
    • year(create_time) = 2025 限制了结果集中只包含创建时间为2025年的记录;
    • month(create_time) = 02 进一步筛选出创建时间在2月份的记录。
  • 排序:通过 order by create_time desc 指令,将最终结果按照 create_time 字段进行降序排列,这意味着最新的交易记录会显示在最前面。

主要就是year()month() 日期函数的功劳~ 它们可以直接提取出符合年、月份的数据
month(date_expression):返回date_expression中的月份值
year(date_expression):返回date_expression中的年份值

  • 你猜的没错~ hh~ 日期肯定也是有的,day(date_expression):返回date_expression中的日期值

更多请参阅文档~

  • 编写有误还请大佬指正,万分感谢。