Oracle查询返回当月的第一个星期日

Oracle查询返回当月的第一个星期日,oracle,datetime,to-date,Oracle,Datetime,To Date,我有一个查询要返回当月的第一个星期日。但是,如果第一个星期天是一个月的第一天,那么它将改为下一个星期天。怎样才能摆脱它,在一个月的第一天返回第一个星期日 以2021年8月1日为例,下面的查询返回2021年8月8日的第二个星期日 SELECT TO_CHAR(NEXT_DAY(TRUNC(TO_DATE(('20210801'), 'yyyyMMdd'), 'MM'), 'Sunday'), 'yyyyMMdd') AS FIRST_SUNDAY FROM DUAL; 将一天移回上个月的最后一天

我有一个查询要返回当月的第一个星期日。但是,如果第一个星期天是一个月的第一天,那么它将改为下一个星期天。怎样才能摆脱它,在一个月的第一天返回第一个星期日

以2021年8月1日为例,下面的查询返回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>