oracle的sql生成日历(转自http://space.itpub.net/519536/viewspace-618320)

 1 select LPAD (Month20 - (20 - LENGTH (month)) / 2month,
 2           "Su",
 3           "Mo",
 4           "Tu",
 5            "We",
 6            "Th",
 7            "Fr",
 8            "Sa"
 9       from (select TO_CHAR (dt, 'fmMonthfm YYYY'month,
10                   case
11                      when TO_CHAR (dt, 'fmMonthfm YYYY'like 'Dec%'
12                      and TO_CHAR (dt + 1'iw'= '01'
13                      then
14                         '53'
15                      when TO_CHAR (dt, 'fmMonthfm YYYY'like 'Jan%'
16                       and TO_CHAR (dt + 1'iw'= '53'
17                      then
18                         '.5'
19                      else
20                         TO_CHAR (dt + 1'iw')
21                   end
22                      week,
23                   MAX(DECODE (TO_CHAR (dt, 'd'),
24                               '1', LPAD (TO_CHAR (dt, 'fmdd'), 2)))
25                      "Su",
26                  MAX(DECODE (TO_CHAR (dt, 'd'),
27                               '2', LPAD (TO_CHAR (dt, 'fmdd'), 2)))
28                      "Mo",
29                   MAX(DECODE (TO_CHAR (dt, 'd'),
30                               '3', LPAD (TO_CHAR (dt, 'fmdd'), 2)))
31                      "Tu",
32                   MAX(DECODE (TO_CHAR (dt, 'd'),
33                               '4', LPAD (TO_CHAR (dt, 'fmdd'), 2)))
34                      "We",
35                   MAX(DECODE (TO_CHAR (dt, 'd'),
36                               '5', LPAD (TO_CHAR (dt, 'fmdd'), 2)))
37                      "Th",
38                   MAX(DECODE (TO_CHAR (dt, 'd'),
39                               '6', LPAD (TO_CHAR (dt, 'fmdd'), 2)))
40                      "Fr",
41                   MAX(DECODE (TO_CHAR (dt, 'd'),
42                               '7', LPAD (TO_CHAR (dt, 'fmdd'), 2)))
43                      "Sa"
44              from (select TRUNC (SYSDATE, 'y'- 1 + ROWNUM dt
45                      from all_objects
46                     where ROWNUM <=
47                              ADD_MONTHS (TRUNC (SYSDATE, 'y'), 12)
48                              - TRUNC (SYSDATE, 'y'))
49            group by TO_CHAR (dt, 'fmMonthfm YYYY'), TO_CHAR (dt + 1'iw')
50            order by TO_CHAR (dt + 1'iw'))
51    order by TO_DATE (month'Month YYYY'), TO_NUMBER (week)

posted on 2010-04-18 09:58 duduli 阅读(1692) 评论(0)  编辑  收藏 所属分类: 数据库业余DBA


只有注册用户登录后才能发表评论。


网站导航:
 
<2010年4月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

公告

welcome to my place.

常用链接

留言簿(5)

我参与的团队

随笔分类

随笔档案

新闻分类

石头JAVA摆地摊儿

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

@duduli