AWS Athena获取上月/上年/半年末日期的替代方法咨询
AWS Athena 获取指定期末日期的简化实现
已知AWS Athena基于Presto,但last_day_of_month(x)函数无法正常使用,针对你需要的几个期末日期,这里提供更简洁的实现方式,替代现有脚本:
1. 上月最后一天
原有实现
SELECT date_trunc('month', current_date) - interval '1' day
简化实现
如果你的Athena版本支持Presto的last_day函数(多数新版环境已支持),可以直接用:
SELECT last_day(date_add('month', -1, current_date))
如果last_day也无法使用,原有写法已经足够简洁,也可以等价写成:
SELECT date_trunc('month', current_date + interval '1' month) - interval '1' day
2. 上年最后一天
原有实现
SELECT date_trunc('year',(date_trunc('month', current_date) - interval '1' day)) - interval '1' day
简化实现
无需绕到上月处理,直接取当前年份的第一天减一天即可:
SELECT date_trunc('year', current_date) - interval '1' day
3. 半年末日期(当年6月30日)
原有实现
SELECT date_add('month',6, date_trunc('year',(date_trunc('month', current_date) - interval '1' day)) - interval '1' day)
简化实现
直接定位到当年1月1日,加6个月后取该月最后一天:
SELECT last_day(date_trunc('year', current_date) + interval '6' month)
如果last_day不可用,也可以用:
SELECT date_trunc('month', date_trunc('year', current_date) + interval '7' month) - interval '1' day
内容的提问来源于stack exchange,提问作者Patty
相关产品推荐
相关产品推荐

