Amazon Athena 日期函数 [重复]

问题描述 投票:0回答:1

我知道 Athena 使用 Presto,但是文档中的函数 last_day_of_month(x) 似乎在 AWS Athena 中不起作用。

有没有一个函数可以根据当前日期(2021 年 9 月 30 日)、上一年的最后一天(2021 年 12 月 31 日)和半年的最后一天(2022 年 6 月 30 日)获取上个月的最后一天等等?

我使用下面的脚本来执行此操作,但是最好知道是否有我可以使用的功能或更简单的方法来运行日期。

SELECT date_trunc('month', current_date) - interval '1' day
SELECT date_trunc('year',(date_trunc('month', current_date) - interval '1' day)) - interval '1' day
SELECT date_add('month',6, date_trunc('year',(date_trunc('month', current_date) - interval '1' day)) - interval '1' day)
sql date amazon-athena presto ansi-sql
1个回答
1
投票

首先,您需要升级您的Workgroup以使用已经支持

last_day_of_month(x)
功能的Athena引擎版本3。

Athena基于Presto/Trino,每个版本的Athena引擎都基于不同版本的开源项目。您可以从工作组菜单控制版本,甚至让 Athena 自动为您升级引擎。

其次,如果你想获得上个月的最后一天,最简单的方法是创建下个月的第一天并从中减去一天。

SELECT date '2012-08-01' - interval '1' day

因此,如果您想要上个月的最后一天,并且按照评论中的建议,使用

date_trunc

SELECT date_trunc('month', current_date ) - interval '1' day

--- half year back
SELECT date_trunc('month', current_date - interval '6' month) - interval '1' day

--- one year back
SELECT date_trunc('month', current_date - interval '1' year) - interval '1' day
© www.soinside.com 2019 - 2024. All rights reserved.