我在甲骨文11.2這是12月30日2014年 查詢甲骨文yyyyiw毛刺
select to_char(sysdate ,'YYYYIW') from dual
回報 201401
代替201501
我錯了還是甲骨文?
我在甲骨文11.2這是12月30日2014年 查詢甲骨文yyyyiw毛刺
select to_char(sysdate ,'YYYYIW') from dual
回報 201401
代替201501
我錯了還是甲骨文?
如果你想在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
這不是Oracle的小故障。
YYYY
返回一年有四個地方,不管它跟隨或前面有什麼。由於sysdate
在2014
年,因此Oracle返回201401
是正確的。
謝謝。我想我必須自己接受它/自己編程。 – MarceluitAlmere
也許'to_char(sysdate,'yyyyww')'(返回'201452')更直觀? –
非常感謝,這一個我不知道。 – MarceluitAlmere