首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

求sql:从四月1号到9月1号每隔3周的星期一星期二的日期

2013-06-19 
求sql:从4月1号到9月1号每隔3周的星期一星期二的日期求sql:从4月1号到9月1号每隔3周的星期一星期二的日期[

求sql:从4月1号到9月1号每隔3周的星期一星期二的日期
求sql:从4月1号到9月1号每隔3周的星期一星期二的日期
[解决办法]
还没怎么想 写的比较麻烦 凑合看着了


--过滤小于4月1号的日期
select c1,to_char(c1,'ww') "周数",to_char(c1,'d') "星期"
from
(
--得出每个周二和往前推2天的日期
select distinct c1-level+1 c1
from
(
  --根据最小的日期一次往前推3周
  select c1 + 21*(level-1) c1
  from
  (
      --计算为周二的最小日期
      select min(c1) c1
      from 
      (
          --构造4月1号到9月1号的日期表
          select date'2013-04-01'+level-1 c1 
          from dual
          connect by level <= date'2013-09-01' - date'2013-04-01'+1
      )
      where to_char(c1,'d') = 2
  )
  connect by level <= (date'2013-09-01' - date'2013-04-01')/21+1
)
connect by level < 4
order by c1
)
where c1 >= date'2013-04-01'


     日期     周数    星期
---------------------------------------------
12013/4/1132
22013/4/20167
32013/4/21161
42013/4/22162
52013/5/11197
62013/5/12191
72013/5/13192
82013/6/1227
92013/6/2221
102013/6/3222
112013/6/22257
122013/6/23251
132013/6/24252
142013/7/13287
152013/7/14281
162013/7/15282
172013/8/3317
182013/8/4311
192013/8/5312
202013/8/24347
212013/8/25341
222013/8/26342

热点排行
Bad Request.