如何使用Oracle SQL查找一个月的第一个星期四?

如何使用Oracle SQL查找一个月的第一个星期四?,sql,oracle,Sql,Oracle,如何使用oracle查找本月的第一个星期四 select trunc(sysdate, 'MM')firstday from dual; 上面是本月的第一天请尝试使用下面的SQL SELECT NEXT_DAY(TRUNC(SYSDATE, 'MONTH'),'THURSDAY') FROM DUAL; 如果你只是在一个月的第一天之后得到下一个星期四,那么后面的部分意味着如果第一天本身是星期四,那么你的约会就晚了一周。例如,2018-02-01是一个星期四,把它放在下一天,你就可以得到201

如何使用oracle查找本月的第一个星期四

select trunc(sysdate, 'MM')firstday from dual;
上面是本月的第一天

请尝试使用下面的SQL

SELECT NEXT_DAY(TRUNC(SYSDATE, 'MONTH'),'THURSDAY') FROM DUAL;

如果你只是在一个月的第一天之后得到下一个星期四,那么后面的部分意味着如果第一天本身是星期四,那么你的约会就晚了一周。例如,2018-02-01是一个星期四,把它放在下一天,你就可以得到2018-02-08

您需要在上个月最后一天之后的下一个星期四:

next_day(trunc(sysdate, 'MM') - 1, 'THU')
两种价值观的示范;特别是2月、3月和11月:

with t (dt) as  (
  select add_months(date '2018-01-15' , level - 1) from dual connect by level <= 12
)
select next_day(trunc(dt, 'MM'), 'THU') as wrong,
       next_day(trunc(dt, 'MM') - 1, 'THU') as ok
from t;

WRONG       OK
----------  ----------
2018-01-04  2018-01-04
2018-02-08  2018-02-01
2018-03-08  2018-03-01
2018-04-05  2018-04-05
2018-05-03  2018-05-03
2018-06-07  2018-06-07
2018-07-05  2018-07-05
2018-08-02  2018-08-02
2018-09-06  2018-09-06
2018-10-04  2018-10-04
2018-11-08  2018-11-01
2018-12-06  2018-12-06