第1个回答 2010-05-18
1. 前三个工作日
通过trade_f字段 减去当月的首日,然后按照它们之间的差排序,最小的前3个就是前三个工作日。
select to_date(to_char(日期字段,'yyyy/mm/dd'),'yyyy/mm/dd')-to_date('2010-05-01','yyyy/mm/dd') as trade_f
from CLNDR
where rownum <= 3
and trade_f = 1
order by trade_f
2.最后一个工作日
思路与1一样,通过间差区最大的那一天
select to_date(to_char(日期字段,'yyyy/mm/dd'),'yyyy/mm/dd')-to_date('2010-05-01','yyyy/mm/dd') as trade_f
from CLNDR
where rownum = 1
and trade_f = 1
order by trade_f desc
第2个回答 2010-05-19
个月的前三个工作日和最后一个工作日
select trunc(sysdate)-substr(to_char(sysdate,'yyyy-mm-dd'),9) +1 from dual; 第一个工作日
select trunc(add_months(sysdate,1))-substr(to_char(sysdate,'yyyy-mm-dd'),9) from dual ; 最后一个工作日