首页 > 解决方案 > 在进入新的一年时找出上个月的数据

问题描述

目前,我正在使用此代码查看上个月的数据,以便在亚马逊的 Athena 中快速查看(这第一部分有效*):

SELECT month, count(1)
FROM table1
WHERE CAST(EXTRACT(month from now()) - 1 as VARCHAR(2)) = month
GROUP BY month

挑战在于如何确保在我们进入新的一年后这段代码能够正常工作?我目前有

SELECT month, count(1)
FROM table1
WHERE CASE WHEN( month = '1' THEN month = '13'
ELSE month
END)
CAST(EXTRACT(month from now()) - 1 as VARCHAR(2)) = month
GROUP BY month

为了澄清,月份作为字符串输入,因此 CAST 为 VARCHAR(2) 以获取“01”到“12”。我在这背后的思考过程是,如果月 = '01',那么它读为'13',然后提取'1',等于'12'。但不确定这是否可行

标签: sqlamazon-athenaamazon-quicksight

解决方案


您可以使用该date_add函数从今天减去一个月:

SELECT DATE_ADD('month', -1, NOW())

或者,您可以减去一个月的间隔以获得相同的结果:

SELECT NOW() - INTERVAL '1' MONTH

在这两种情况下,您都可以使用MONTH(…)orEXTRACT(MONTH FROM …)来获取月份编号。


推荐阅读