2013-01-09 34 views
2

我不確定這是否是一個問題或更多的探討可能的錯誤或有關更好的方法來處理這個問題的問題。Oracle 10g數據庫日期轉換爲'yyyy-iw'問題?

我有一個使用

select column1id, column2date 
from table1 
where to_char(column2date,'yyyy-iw') = to_char(to_date('2012-12-31','yyyy-mm-dd'),'yyyy-iw') 

行彙總報告:to_char(to_date('2012-12-31','yyyy-mm-dd'),'yyyy-iw')被轉換爲2012-01,包裝回到年初。

進一步挖掘我發現2012-12-31日期既不包含在星期:2012-52也不包括在2013-01年,2012-53也不返回任何數據...所以我不知道這裏發生了什麼。

回答

3

https://forums.oracle.com/forums/thread.jspa?threadID=995899 Ravi Kumar寫道:您需要使用IYYY格式。 BluShadow寫道:...當它計算YYYY和IW時,它們是互相獨立的,所以它不會將YYYY輸出減少到[2013],因爲您已經在格式掩碼中包含了IW。它看着面具的組成部分,而不是組合在一起。

select to_char(to_date('2012-12-31','yyyy-mm-dd'),'iyyy-iw') from dual; 

返回2013-01。

我覺得你的WHERE子句應該是:

where to_char(column2date,'iyyy-iw') = to_char(to_date('2012-12-31','yyyy-mm-dd'),'iyyy-iw') 
+0

工作就像一個魅力馬修。謝謝! – BKK

+0

救生員!謝謝。 –