我正在PostgreSQL环境中工作,但遇到以下问题:假设今天是2019年4月8日,我想提取倒数第二个月(因此从2月1日至2019年2月28日)+在同一月但在2017年和2018年(因此在18年2月和17年)开设帐户的用户ID列表。
如果我们假设今天是2019年6月25日,我想在以下期间拉出清单: -2019年4月1日至30日; -2018年4月1日至30日; -2017年4月1日至30日。
我现在有这个SQL代码。如您所见,我必须每月更改WHERE子句中的日期。有人可以建议我如何解决这个问题吗?
SELECT
deposit_id,
to_char(activation_date, 'yyyy-mm-dd') as placement_start_date,
FROM fixed_term_plan
WHERE
activation_date BETWEEN Date '2019-01-01' AND Date '2019-01-31' or activation_date BETWEEN Date '2018-01-01' AND Date '2018-01-31' or activation_date BETWEEN date '2017-01-01' AND Date '2017-01-31'
答案 0 :(得分:1)
嗯。我在想:
SELECT deposit_id,
to_char(activation_date, 'yyyy-mm-dd') as placement_start_date,
FROM fixed_term_plan ftp
WHERE extract(month from activiation_date) = extract(month from (now() - interval '2 month'));