如何使用Oracle SQL查找一个月的第一个星期四?
如何使用oracle查找本月的第一个星期四如何使用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
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