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

SQL如何按年末日期分组汇总,输出年末完整日期而非年份数字

实现方案

不同数据库的日期处理函数略有差异,核心逻辑都是先取日期对应的年份,再拼接/计算得到当年12月31日的日期,以下是主流数据库可直接复用的写法:

提示:如果你的Mydate字段存储的是字符串格式(如示例中的15/6/2020),需要先按对应数据库规则转为日期类型再做计算,避免格式报错。

  • MySQL 版本
-- 输出日期类型的年末日期
SELECT STR_TO_DATE(CONCAT(YEAR(Mydate), '-12-31'), '%Y-%m-%d') AS year_end_date,
       SUM(Amount) AS amount
FROM table1
GROUP BY year_end_date

-- 如需输出 12/31/2021 格式的字符串,使用下方写法
SELECT DATE_FORMAT(STR_TO_DATE(CONCAT(YEAR(Mydate), '-12-31'), '%Y-%m-%d'), '%m/%d/%Y') AS year_end_date,
       SUM(Amount) AS amount
FROM table1
GROUP BY year_end_date
  • SQL Server 版本
-- 输出日期类型的年末日期
SELECT DATEFROMPARTS(YEAR(Mydate), 12, 31) AS year_end_date,
       SUM(Amount) AS amount
FROM table1
GROUP BY DATEFROMPARTS(YEAR(Mydate), 12, 31)

-- 如需输出 12/31/2021 格式的字符串,使用下方写法
SELECT FORMAT(DATEFROMPARTS(YEAR(Mydate), 12, 31), 'MM/dd/yyyy') AS year_end_date,
       SUM(Amount) AS amount
FROM table1
GROUP BY DATEFROMPARTS(YEAR(Mydate), 12, 31)
  • PostgreSQL 版本
-- 输出日期类型的年末日期
SELECT (DATE_TRUNC('year', Mydate) + INTERVAL '1 year - 1 day')::DATE AS year_end_date,
       SUM(Amount) AS amount
FROM table1
GROUP BY year_end_date

-- 如需输出 12/31/2021 格式的字符串,使用下方写法
SELECT TO_CHAR((DATE_TRUNC('year', Mydate) + INTERVAL '1 year - 1 day')::DATE, 'MM/DD/YYYY') AS year_end_date,
       SUM(Amount) AS amount
FROM table1
GROUP BY year_end_date
  • Oracle 版本
-- 输出日期类型的年末日期
SELECT TRUNC(Mydate, 'YEAR') + INTERVAL '1' YEAR - INTERVAL '1' DAY AS year_end_date,
       SUM(Amount) AS amount
FROM table1
GROUP BY TRUNC(Mydate, 'YEAR') + INTERVAL '1' YEAR - INTERVAL '1' DAY

-- 如需输出 12/31/2021 格式的字符串,使用下方写法
SELECT TO_CHAR(TRUNC(Mydate, 'YEAR') + INTERVAL '1' YEAR - INTERVAL '1' DAY, 'MM/DD/YYYY') AS year_end_date,
       SUM(Amount) AS amount
FROM table1
GROUP BY TRUNC(Mydate, 'YEAR') + INTERVAL '1' YEAR - INTERVAL '1' DAY

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:48:03