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

时间:2017-06-07 07:31:55

标签: sql oracle plsql

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

3 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:0)

使用此

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

想法是先获得本月的最后一天。获取其天数,并查看您需要减去多少天才能到达星期五。然后从该月的最后一天减去它。

测试

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

答案 2 :(得分:0)

SELECT TO_CHAR(NEXT_DAY(LAST_DAY(SYSDATE)-7, 'FRIDAY'), ' DD MONTH, YYYY')) "LAST_FRIDAY" FROM DUAL;