ORACLE 得到一年中的第几周的开始和结束日期
oracle 第几周 开始日期 结束日期
日月明王BLOG http://sunmoonking.spaces.live.com
得到一年中的第几周的开始和结束日期。
select trunc(sysdate, 'MM')+rownum-1 as wwm from user_objects where rownum < 拼出一年的日期。
366to_char(wwm,'D')=1 得到周日的日期,
decode(sign(sunday.the_day-saturday.the_day),-1,sunday.the_day,sunday.the_day-7) 当本周的周日大于周六的日期的时候,那么说明ORACLE对周的理解有误,所以将周日减7天得到真正的本周的第一天。
SQL> l
select
sunday.the_week,decode(sign(sunday.the_day-saturday.the_day),-1,sunday.the_day,sunday.the_day-7)
sunday,saturday.the_day saturday from
(select to_char(wwm,'WW') the_week,to_char(wwm,'D') the_daynum,wwm the_day from (select
trunc(sysdate, 'MM')+rownum-1 as wwm from user_objects where rownum < 366) where
to_char(wwm,'D')=1 ) sunday,
(select to_char(wwm,'WW') the_week,to_char(wwm,'D') the_daynum,wwm the_day from (select
trunc(sysdate, 'MM')+rownum-1 as wwm from user_objects where rownum < 366) where
to_char(wwm,'D')=7 ) saturday
where sunday.the_week=saturday.the_week
oracle 第几周 开始日期 结束日期
日月明王BLOG http://sunmoonking.spaces.live.com
得到一年中的第几周的开始和结束日期。
select trunc(sysdate, 'MM')+rownum-1 as wwm from user_objects where rownum < 拼出一年的日期。
366to_char(wwm,'D')=1 得到周日的日期,
decode(sign(sunday.the_day-saturday.the_day),-1,sunday.the_day,sunday.the_day-7) 当本周的周日大于周六的日期的时候,那么说明ORACLE对周的理解有误,所以将周日减7天得到真正的本周的第一天。
SQL> l
select
sunday.the_week,decode(sign(sunday.the_day-saturday.the_day),-1,sunday.the_day,sunday.the_day-7)
sunday,saturday.the_day saturday from
(select to_char(wwm,'WW') the_week,to_char(wwm,'D') the_daynum,wwm the_day from (select
trunc(sysdate, 'MM')+rownum-1 as wwm from user_objects where rownum < 366) where
to_char(wwm,'D')=1 ) sunday,
(select to_char(wwm,'WW') the_week,to_char(wwm,'D') the_daynum,wwm the_day from (select
trunc(sysdate, 'MM')+rownum-1 as wwm from user_objects where rownum < 366) where
to_char(wwm,'D')=7 ) saturday
where sunday.the_week=saturday.the_week