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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章