如何在oracle中获得2013年每个月的最后一个星期四?我需要将此日期更新到我的表格中.
我需要输出像
Last Thursday in a year 2013
----------------------
31.01.2013
28.02.2013
28.03.2013
24.04.2013
30.05.2013
27.06.2013
25.07.2013
29.08.2013
26.09.2013
31.10.2013
28.11.2013
26.12.2013
Run Code Online (Sandbox Code Playgroud)
多亏了需要.
Ton*_*ews 11
这样做:
select next_day (last_day (add_months(date '2013-01-01', rownum-1))-7, 'THU') as thurs
from dual
connect by level <= 12;
THURS
---------
31-JAN-13
28-FEB-13
28-MAR-13
25-APR-13
30-MAY-13
27-JUN-13
25-JUL-13
29-AUG-13
26-SEP-13
31-OCT-13
28-NOV-13
26-DEC-13
12 rows selected.
Run Code Online (Sandbox Code Playgroud)
说明:
1)以下select是生成一系列整数1..12的方法:
select rownum from dual connect by level <= 12;
Run Code Online (Sandbox Code Playgroud)
2)按照2013年1月1日的规定返回2012年12个月中的第1个月,并添加0个月,1个月,......,11个月:
select add_months(date '2013-01-01', rownum-1)
from dual connect by level <= 12;
Run Code Online (Sandbox Code Playgroud)
3)该last_day函数返回给定日期的月份的最后一天,因此我们现在有2013-01-31,2013-02-28,...,2013-12-31.
4)next_day (date, 'THU')在指定日期之后返回下一个星期四.要获得本月的最后一个星期四,我们将在该月的最后一天,返回7天,然后找到下一个星期四.