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

AWS Athena如何动态获取最近两个日历年的数据?

动态获取当前年份及上一年份的日历年数据解决方案

你的问题在于原语句是从当前日期向前回溯两年的区间,而非完整的上一年和当前日历年。以下是不同数据库的正确实现方式:

PostgreSQL

方式1:基于日期范围(推荐,可利用索引)

MYDATE >= date_trunc('year', current_date) - interval '1 year'
AND MYDATE < date_trunc('year', current_date) + interval '1 year'

date_trunc('year', current_date)会返回当前年份的第一天(如2024-01-01),减1年得到上一年的起始日,加1年得到下一年的起始日,这样就能精准覆盖上一年和当前年的所有数据。

方式2:提取年份直接比较

EXTRACT(YEAR FROM MYDATE) IN (EXTRACT(YEAR FROM current_date) - 1, EXTRACT(YEAR FROM current_date))

MySQL

方式1:基于日期范围

MYDATE >= STR_TO_DATE(CONCAT(YEAR(CURDATE()) - 1, '-01-01'), '%Y-%m-%d')
AND MYDATE < STR_TO_DATE(CONCAT(YEAR(CURDATE()) + 1, '-01-01'), '%Y-%m-%d')

方式2:提取年份直接比较

YEAR(MYDATE) IN (YEAR(CURDATE()) - 1, YEAR(CURDATE()))

SQL Server

方式1:基于日期范围

MYDATE >= DATEFROMPARTS(YEAR(GETDATE()) - 1, 1, 1)
AND MYDATE < DATEFROMPARTS(YEAR(GETDATE()) + 1, 1, 1)

方式2:提取年份直接比较

YEAR(MYDATE) IN (YEAR(GETDATE()) - 1, YEAR(GETDATE()))

注意:如果MYDATE字段有索引,优先使用日期范围的写法,性能更优;提取年份的写法更简洁直观,适合无索引或数据量较小的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:24:54