有什么办法,我们可以在sql或pl / sql中编写查询来查找当月最后一个星期五的日期吗? 在此先感谢!!!
答案 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;