Oracle 10g数据库日期转换为';yyyy-iw';问题?

Oracle 10g数据库日期转换为';yyyy-iw';问题?,oracle,plsql,Oracle,Plsql,我不确定这是否是一个问题,或者更多的是一个对可能的bug的探索,或者是一个关于如何更好地处理这个问题的问题 我有一个使用 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

我不确定这是否是一个问题,或者更多的是一个对可能的bug的探索,或者是一个关于如何更好地处理这个问题的问题

我有一个使用

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周也不返回任何数据。。。所以我对这里发生的事情一无所知。

拉维·库马尔写道:你需要在格式上使用iyy。 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')

马修很有魅力。非常感谢。