ORACLE to_char() 函数获取自然周数

 

最简单的是使用

 

/* Formatted on 2009/12/02 16:01 (Formatter Plus v4.8.8) */

SELECT TO_CHAR (TO_DATE ('2009-12-02', 'YYYY-MM-DD'), 'WW')

  FROM DUAL;

不过to_char()函数在计算一年中第几周是从该年的1月1日开始的。

 

 以下SQL 能得到正确的自然周数.

 

/* Formatted on 2009/12/02 15:31 (Formatter Plus v4.8.8) */

SELECT TO_CHAR

          (DECODE

              (SIGN

                  (  (  TO_DATE ('2009-12-02', 'YYYY-MM-DD')

                      + TO_NUMBER

                              (DECODE (TO_CHAR (TRUNC (TO_DATE ('2009-12-02',

                                                                'YYYY-MM-DD'

                                                               ),

                                                       'YYYY'

                                                      ),

                                                'D'

                                               ),

                                       '1', '8',

                                       TO_CHAR (TRUNC (TO_DATE ('2009-12-02',

                                                                'YYYY-MM-DD'

                                                               ),

                                                       'YYYY'

                                                      ),

                                                'D'

                                               )

                                      )

                              )

                      - 2

                     )

                   - LAST_DAY (TO_DATE ('2009-12-02', 'YYYY-MM-DD'))

                  ),

               1, LAST_DAY (TO_DATE ('2009-12-02', 'YYYY-MM-DD')),

               (  TO_DATE ('2009-12-02', 'YYYY-MM-DD')

                + TO_NUMBER (DECODE (TO_CHAR (TRUNC (TO_DATE ('2009-12-02',

                                                              'YYYY-MM-DD'

                                                             ),

                                                     'YYYY'

                                                    ),

                                              'D'

                                             ),

                                     '1', '8',

                                     TO_CHAR (TRUNC (TO_DATE ('2009-12-02',

                                                              'YYYY-MM-DD'

                                                             ),

                                                     'YYYY'

                                                    ),

                                              'D'

                                             )

                                    )

                            )

                - 2

               )

              ),

           'WW'

          )

  FROM DUAL;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值