Oracle 查询到当月第一个星期日的 return

Oracle query to return first Sunday of current month

我想查询 return 本月的第一个星期日。但是,如果第一个星期日是该月的第一天,则改为下一个星期日。怎么去掉到每个月的第一天的第一个星期日return?

以2021年8月1日为例,下面查询return的第二个星期日,2021年8月8日

SELECT TO_CHAR(NEXT_DAY(TRUNC(TO_DATE(('20210801'), 'yyyyMMdd'), 'MM'), 'Sunday'), 'yyyyMMdd') AS FIRST_SUNDAY FROM DUAL;

向后移动一天,即上个月的最后一天:

SQL> SELECT TO_CHAR (
  2            NEXT_DAY (TRUNC (TO_DATE (('20210801'), 'yyyyMMdd'), 'MM') - 1,
  3                      'sunday'),                                   --   ^^
  4            'yyyyMMdd') AS FIRST_SUNDAY                            -->  this
  5    FROM DUAL;

FIRST_SU
--------
20210801

SQL> SELECT TO_CHAR (
  2            NEXT_DAY (TRUNC (TO_DATE (('20210701'), 'yyyyMMdd'), 'MM') - 1,
  3                      'sunday'),
  4            'yyyyMMdd') AS FIRST_SUNDAY
  5    FROM DUAL;

FIRST_SU
--------
20210704

SQL>