ITPub博客

首页 > 数据库 > Oracle > Oracle年历【By Jackywood】

Oracle年历【By Jackywood】

原创 Oracle 作者:lastwinner 时间:2005-12-25 23:58:12 0 删除 编辑

jackywood原创,lastwinner小做修改:)

原文地址:http://www.itpub.net/469543.html

[@more@]

column next_year new_v next_year
set termout off
select to_char(add_months(sysdate,12),'yyyy') next_year from dual;
set termout on
accept year char prompt '请输入日历年份,默认为明年:' default &next_year;
set timing off
set autotrace off

set linesize 1000
set term off verify off feedback off pagesize 999
SET TRIMSPOOL ON

spool calendar&year..html
set heading off
select lpad(' ',30)||' Calendar of '||&year||' Year ' title from dual
/
set heading on

set markup html on entmap off spool on preformat off
alter session set nls_language=american;

select case
when (new_yweek = min(new_yweek)
over(partition by mon order by new_yweek)) then
mon_name
else
null
end as month,
new_yweek as yweek,
row_number() over(partition by mon order by new_yweek) as mweek,
sum(decode(wday, '1', mday, null)) as sun,
sum(decode(wday, '2', mday, null)) as mon,
sum(decode(wday, '3', mday, null)) as tue,
sum(decode(wday, '4', mday, null)) as wed,
sum(decode(wday, '5', mday, null)) as thu,
sum(decode(wday, '6', mday, null)) as fri,
sum(decode(wday, '7', mday, null)) as sat
from (select dayofyear as everyday,
to_char(dayofyear, 'mm') as mon,
to_char(dayofyear, 'Month') as mon_name,
to_char(dayofyear, 'w') as mweek,
to_char(dayofyear, 'ww') as yweek,
case
when (to_char(to_date(&year || '0101', 'yyyymmdd'), 'd') > '1') and
(to_char(dayofyear, 'd') < to_char(to_date(&year || '0101', 'yyyymmdd'), 'd'))
then
to_char(to_char(dayofyear, 'ww') + 1, 'fm00')
else
to_char(dayofyear, 'ww')
end as new_yweek,
to_char(dayofyear, 'd') as wday,
to_char(dayofyear, 'dd') as mday
from (select to_date(&year || '0101', 'yyyymmdd') + level - 1 as dayofyear
from dual
connect by level <= to_char(to_date(&year || '1231', 'yyyymmdd'),'ddd')))
group by mon, mon_name, new_yweek
/

SPOOL OFF

set markup html off entmap off preformat on
set term on verify on feedback on pagesize 14
set linesize 80
prompt 日历已生成

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29867/viewspace-812261/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 2005十大笑话.txt
请登录后发表评论 登录
全部评论

注册时间:2007-12-12

  • 博文量
    223
  • 访问量
    2838083