2

これが、考えられるバグの調査の質問なのか、それともこれを処理するためのより良い方法に関する質問なのかはわかりません。

を使用するロールアップレポートがあります

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もデータを返しません...だから私はここで何が起こっているのか途方に暮れて。

4

1 に答える 1

3

https://forums.oracle.com/forums/thread.jspa?threadID=995899RaviKumarは次のように書いています。フォーマットで IYYYを使用する必要があります。 BluShadowは次のように書いています。...YYYYとIWを計算するとき、これらは互いに独立しているため、フォーマットマスクにIWを含めたからといって、YYYY出力が[2013]に減少することはありません。マスクのコンポーネントを調べますが、全体を組み合わせて見るわけではありません。

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')
于 2013-01-09T00:19:25.600 に答える