关注公众号:程序员老左,每天分享程序员职场经验及开发技术!
场景
场景如下: 就拿微信记账本来说,有非常多类似以下一样的场景,需要统计某个月份的数据
前置
首先看下表结构,很简单其实就是一张交易记录表
我这里随便添加了几条数据
解决
非常简单, 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:全部查出来了,符合预期
2025-01:一条记录没有,符合预期
总结
选择字段:选择了 id, wx_user_id, category_id, amount, remark, 和 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中的日期值
作者:金金金__
链接:https://juejin.cn