[英]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.