如何在亚马逊雅典娜查询中查找去年当前月份?

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

例如,如果今天是 2023-09-23 (yyyymm) 那么我需要提取2022年9月到2023年9月(2022-09-01到2023-09-30)的数据。

对于下面的代码,我的目的是打印从 2022 年 12 月 1 日到今天的数据。 查询运行,但由于某种原因,它打印了 2022 年 1 月 1 日的数据。 你能修正第一句话吗?

WITH START_DAY AS (SELECT CAST(date_trunc('month', current_date - interval '14' month) AS VARCHAR) AS START_DAY),
     Current_MONTH AS (SELECT TO_CHAR(CURRENT_DATE, 'yyyymm') AS Current_MONTH),
TABLE1 as(
select
from
WHERE CAST(DATE_FORMAT(CAST(submission_date AS TIMESTAMP), '%Y%m') AS VARCHAR) 
    between (select start_day from start_day) 
        AND (select Current_MONTH from Current_MONTH)
)


SELECT *
from table1
sql amazon-athena presto trino
1个回答
0
投票

TBH,不太清楚为什么你期望

current_date - interval '14' month
给你一年前的同一个月,我上次检查是一年中的12个月。要获得上一年的同月可以这样做:

select date_trunc('month', current_date) - interval '1' year;

这会给你:

   _col0    
------------
 2022-12-01 

您需要解决的下一件事是您所做的时间转换。首先,我建议比较日期而不是字符串,因此将所有内容都转换为日期,而不是使用看似使用不同格式的三种不同转换(例如尝试运行

SELECT CAST(date_trunc('month', current_date - interval '14' month) AS VARCHAR)
)。所以最终的结果会是这样的:

select *
from original_table
where CAST(submission_date AS TIMESTAMP)
   between date_trunc('month', now()) - interval '1' year and now()
© www.soinside.com 2019 - 2024. All rights reserved.