例如,如果今天是 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
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()