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

Oracle技术求助:如何按年/月提取表中实际最大业务日期

解决按年月提取实际最大业务日期的问题

嗨,这个需求太常见了!LAST_DAY()确实只能返回当月的日历最后一天,完全没法匹配业务数据里实际存在的最晚日期,咱们换个思路用分组+聚合就能轻松搞定。

核心逻辑很简单:先把业务日期归到对应的“年月”分组里,再对每个分组取业务日期的最大值,这个最大值就是该月实际存在的最大业务日期。

下面给你几个主流SQL数据库的具体实现示例:

MySQL 实现

SELECT
    DATE_FORMAT(business_date, '%Y-%m') AS year_month,
    MAX(business_date) AS actual_max_business_date
FROM
    your_table_name -- 替换成你的表名
GROUP BY
    DATE_FORMAT(business_date, '%Y-%m')
ORDER BY
    year_month;

PostgreSQL 实现

推荐用DATE_TRUNC截断日期到月份,比字符串格式化更可靠:

SELECT
    DATE_TRUNC('month', business_date) AS month_period,
    MAX(business_date) AS actual_max_business_date
FROM
    your_table_name -- 替换成你的表名
GROUP BY
    DATE_TRUNC('month', business_date)
ORDER BY
    month_period;

如果需要返回YYYY-MM格式的年月字符串,也可以用TO_CHAR:

SELECT
    TO_CHAR(business_date, 'YYYY-MM') AS year_month,
    MAX(business_date) AS actual_max_business_date
FROM
    your_table_name
GROUP BY
    TO_CHAR(business_date, 'YYYY-MM')
ORDER BY
    year_month;

SQL Server 实现

SELECT
    FORMAT(business_date, 'yyyy-MM') AS year_month,
    MAX(business_date) AS actual_max_business_date
FROM
    your_table_name -- 替换成你的表名
GROUP BY
    FORMAT(business_date, 'yyyy-MM')
ORDER BY
    year_month;

额外优化建议

如果你的表数据量很大,记得给business_date字段创建索引,这样分组聚合的查询效率会提升不少。

内容的提问来源于stack exchange,提问作者Abhishek Bm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:28:38