You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL:无需列比较,如何统计当前月份交易记录行数?

PostgreSQL统计当月记录行数的简洁写法

PostgreSQL没有完全无需与transaction_date列做比较的内置统计方法——毕竟数据库得明确依据哪个字段筛选当月数据。不过可以用更简洁的日期函数替代手动计算当月首尾日期的写法,让代码更易读、更严谨:

方法一:使用date_trunc截断日期到月份

把交易日期和当前日期都截断到「月份」维度,直接对比是否属于同一月份:

SELECT COUNT(*) 
FROM table_name 
WHERE date_trunc('month', transaction_date) = date_trunc('month', CURRENT_DATE);

方法二:使用EXTRACT提取年月信息

分别提取交易日期和当前日期的年份、月份,再进行匹配:

SELECT COUNT(*) 
FROM table_name 
WHERE EXTRACT(YEAR FROM transaction_date) = EXTRACT(YEAR FROM CURRENT_DATE)
  AND EXTRACT(MONTH FROM transaction_date) = EXTRACT(MONTH FROM CURRENT_DATE);

补充说明

相比你原来用BETWEEN的写法,这两种方式能避免时间边界问题:比如如果transaction_date包含时分秒,BETWEEN '当月第一天' AND '当月最后一天'会漏掉当月最后一天中晚于00:00:00的记录,而上面的两种写法则不会有这个问题。

内容的提问来源于stack exchange,提问作者Purushottam Nawale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:29:55