Oracle 上个月的第一个星期一

Oracle 上个月的第一个星期一,oracle,Oracle,对于Oracle查询,我必须获取上个月的第一个星期一的日期 ms SQL是 select dateadd (day, (9 - datepart(dw, eomonth(getdate(), -2)))%7, eomonth(getdate(), -2)) 但是Oracle中没有dateadd函数。给你: SQL> alter session set nls_date_language = 'english'; Session altered. SQL> alter sessi

对于Oracle查询,我必须获取上个月的第一个星期一的日期

ms SQL是

select dateadd (day, (9 - datepart(dw, eomonth(getdate(), -2)))%7, eomonth(getdate(), -2))
但是Oracle中没有
dateadd
函数。

给你:

SQL> alter session set nls_date_language = 'english';

Session altered.

SQL> alter session set nls_date_Format = 'dd.mm.yyyy day';

Session altered.

SQL>
SQL> select next_day(add_months(trunc(sysdate, 'mm'), -1), 'monday') first_monday
  2  from dual;

FIRST_MONDAY
--------------------
02.03.2020 monday

SQL>
它有什么作用

  • 将今天的日期(
    SYSDATE
    )截断为每月的第一天(
    'mm'
  • 减去
    1
    month(
    add\u month
  • 使用
    next\u day
    功能以及
    'monday'
    参数
您可以使用:

TRUNC(TRUNC(add_months(dt, -1), 'mm') + 6, 'iw')
这将从指定日期减去一个月,将其截断为该月的第一个月,然后再加上6天,最后将其截断为iso周的开始(通常为周一)

您需要在每月的第一个星期一加上6,以便将相应的星期一计算为每月的第一个星期一(否则您可能会选择上个月的最后一个星期一)

你可以看到它在[这里[()