如何显示过去一个月(不是最近 30 天)的 sql 记录,并在下个月的每个第二个日历日期更新一次?

How to display in sql records of past Month (not last 30 days) and update them every 2nd calendar date of the next month?

我正在尝试表示过去一个月的数据,例如从 4 月 2 日开始的 30 天,并继续每月更新数据,以便在 5 月 2 日显示 5 月 2 日之前 30 天的数据。

我将展示我当前的代码:

SELECT 'Working Equipment' label, count(*) FROM   LOGS_HISTORY
WHERE  MODE__ = 'Working'
AND    TIME_ >= add_months(sysdate, -1)
union all
SELECT 'Standby Equipment' label, count(distinct TAG_IDENTIFIER) FROM   LOGS_HISTORY
WHERE  MODE__ = 'Standby'
AND    TIME_ >= add_months(sysdate, -1)

它显示的是sysdate之前30天的数据,请仔细查看并建议我应该更改什么?

根据您的要求,您可以使用这个:

AND TIME_ >= add_months(trunc(sysdate-1,'MM'),-1)

此示例查询显示开始日期如何在 5 月 2 日从 3 月 1 日更改为 4 月 1 日:

with dates as
( select trunc(date '2022-04-27')+rownum d
  from dual
connect by level < 10
)
select d as sys_date, add_months(trunc(d-1,'MM'),-1) from_date
from dates
order by 1;

结果:

SYS_DATE                FROM_DATE
--------                ---------
28-APR-2022 00:00:00    01-MAR-2022 00:00:00
29-APR-2022 00:00:00    01-MAR-2022 00:00:00
30-APR-2022 00:00:00    01-MAR-2022 00:00:00
01-MAY-2022 00:00:00    01-MAR-2022 00:00:00
02-MAY-2022 00:00:00    01-APR-2022 00:00:00
03-MAY-2022 00:00:00    01-APR-2022 00:00:00
04-MAY-2022 00:00:00    01-APR-2022 00:00:00
05-MAY-2022 00:00:00    01-APR-2022 00:00:00
06-MAY-2022 00:00:00    01-APR-2022 00:00:00