如何在AWS Athena中按列值动态为日期列添加天数?
在AWS Athena中根据列值动态为日期添加对应天数
问题场景
需要在AWS Athena表中,依据另一列的数值为日期列动态添加对应天数。目前已实现固定天数的添加,语句如下:
select (current_date + interval '1' day) as Incremented_Date
但尝试以下动态添加语句时触发错误:
select (current_date + interval D_Plus day) as Incremented_Date from (select * from (VALUES(1), (2), (3), (4) ) as t("D_Plus"))
错误信息:
mismatched input 'D_Plus'. Expecting: '+', '-', . *
期望输出结果:
解决方法
AWS Athena基于Presto,不支持直接将列名作为interval的数值参数。可以使用date_add函数实现动态天数添加,这是更直观且符合最佳实践的写法:
select date_add('day', D_Plus, current_date) as Incremented_Date from (select * from (VALUES(1), (2), (3), (4) ) as t("D_Plus"))
也可以通过将数值拼接成interval字符串再转换的方式实现:
select current_date + cast(concat(D_Plus, ' days') as interval) as Incremented_Date from (select * from (VALUES(1), (2), (3), (4) ) as t("D_Plus"))
内容的提问来源于stack exchange,提问作者Alex PT
相关产品推荐
相关产品推荐

