繁体   English   中英

Oracle:如何查找本月最后一个星期五的日期

[英]Oracle: How to find date of last Friday of the month

有什么办法,我们可以在sql或pl/sql中写一个查询来查找当月最后一个星期五的日期? 提前致谢!!!

您可以使用LAST_DAY( SYSDATE )获取该月的最后一天。 如果从中减去 7 天,则可以使用NEXT_DAY()函数查找该月的最后一个星期五:

SELECT NEXT_DAY(
         LAST_DAY( SYSDATE ) - INTERVAL '7' DAY,
         'FRIDAY'
       )
FROM   DUAL;

如果要将日期截断到当天的午夜,请将其包装在TRUNC()

使用这个

select 
trunc(last_day(sysdate) - 
case 
  when to_char(last_day(sysdate),'D') >= 6 then 
    to_char(last_day(sysdate),'D')  - 6 
  else to_char(last_day(sysdate),'D') + 1
end
) as last_friday
from dual

想法是先得到当月的最后一天。 获取它的天数,看看你需要减去多少天才能到星期五。 然后从当月的 last_day 减去它。

测试

select 
trunc (last_day(dt) - 
case 
  when to_char(last_day(dt),'D') >= 6 then 
    to_char(last_day(dt),'D')  - 6 
  else to_char(last_day(dt),'D') + 1
end
) as last_day
from
(select sysdate as dt from dual union all
select date '2017-05-01' from dual union all
select date '2017-02-01' from dual)

输出

LAST_DAY
30-JUN-17 00.00.00
26-MAY-17 00.00.00
24-FEB-17 00.00.00

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM