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>
我想查询 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>