2013-01-10 54 views
0

在oracle中有可能更改本週的開始日期。 在美國的第一天是太陽,而在歐盟 - MON在本週的一週中的星期幾

這種變化的工作原理是改變NLS_TERRITORY

但是,如果我考慮在一次週週編號的一天,我有以下情況:

day week_number 
    7   9 <- here it should be still week 8 
    1   9 
    2   9 
    3   9 
    4   9 
    5   9 
    6   9 
    7   10 <- here it should still be week 9 

你有什麼想法可以影響本週的開始日期嗎?

類似的帖子 Get First Day Of Week From Week Number

+0

檢查了答案接近我正在尋找的問題。但其他問題並沒有導致我期望的答案。 –

回答

2

Oracle有兩個日期格式,這給我們的週數。

'WW'從1月份開始,每7天遞增一次。由於2013年1月1日是週二,這意味着星期二的週數會增加。我想這是你現在使用的版本。

但也有'IW'格式,這是ISO標準。在這個版本中,星期數從一月份的第一個星期的下一個星期一開始。這具有使2013年12月31日成爲2013年第一週的第一個日期的特殊副作用,但這確實意味着週數在本週的第1天總是增加。

Find out more.

+0

謝謝這就是我搞砸了...... –

0

不知道我理解你的問題,我看到你的榜樣天#和#一週之間沒有連接,對不起......也許這將幫助你獲得ISO周。這建立了年度周表。您可以在查詢中添加'WW'格式,並比較日期,比較幾周。 NLS設置:

-- ISO_WK# -- 
    SELECT mydate 
    , TRUNC(mydate, 'w') wk_starts 
    , TRUNC(mydate, 'w') + 7 - 1/86400 wk_ends 
    , TO_NUMBER (TO_CHAR (mydate, 'IW')) ISO_wk# 
    FROM 
    (
    SELECT TRUNC(SYSDATE, 'YEAR')-1 + LEVEL AS mydate 
     FROM dual 
    CONNECT BY LEVEL <= 
     (
     SELECT TRUNC(SYSDATE, 'YEAR')-TRUNC(ADD_MONTHS (SYSDATE, -12), 'YEAR') "Num of Days" 
     FROM dual 
    ) 
    ) 
/
相關問題