你们好,我是金金金。

场景
- 场景如下: 就拿微信记账本来说,有非常多类似以下一样的场景,需要统计某个月份的数据
前置
首先看下表结构,很简单其实就是一张交易记录表
我这里随便添加了几条数据
解决
非常简单,
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中的日期值
更多请参阅文档~
- 编写有误还请大佬指正,万分感谢。