2014-12-30 99 views

回答

0

如果你想在ISO年份以及ISO星期,用IYYY format model

select to_char(sysdate,'IYYYIW') from dual; 

TO_CHAR(SYSDATE,'IYYYIW') 
------------------------- 
201501      

混合ISO和非ISO會給你奇怪的結果。您可以看到它與以下類似的差異:

with t as (
    select date '2014-12-19' + level as dt 
    from dual connect by level <= 18 
) 
select to_char(t.dt, 'YYYY-MM-DD') as dt, 
    to_char(t.dt, 'YYYYWW') as normal, 
    to_char(t.dt, 'YYYYIW') as iso_week, 
    to_char(t.dt, 'IYYYIW') as iso 
from t 
order by t.dt; 

DT   NORMAL ISO_WEEK ISO 
---------- ------ -------- ------ 
2014-12-20 201451 201451 201451 
2014-12-21 201451 201451 201451 
2014-12-22 201451 201452 201452 
2014-12-23 201451 201452 201452 
2014-12-24 201452 201452 201452 
2014-12-25 201452 201452 201452 
2014-12-26 201452 201452 201452 
2014-12-27 201452 201452 201452 
2014-12-28 201452 201452 201452 
2014-12-29 201452 201401 201501 
2014-12-30 201452 201401 201501 
2014-12-31 201453 201401 201501 
2015-01-01 201501 201501 201501 
2015-01-02 201501 201501 201501 
2015-01-03 201501 201501 201501 
2015-01-04 201501 201501 201501 
2015-01-05 201501 201502 201502 
2015-01-06 201501 201502 201502 
+0

非常感謝,這一個我不知道。 – MarceluitAlmere

0

這不是Oracle的小故障。

YYYY返回一年有四個地方,不管它跟隨或前面有什麼。由於sysdate2014年,因此Oracle返回201401是正確的。

+0

謝謝。我想我必須自己接受它/自己編程。 – MarceluitAlmere

+0

也許'to_char(sysdate,'yyyyww')'(返回'201452')更直觀? –