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=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')
于 2013-01-09T00:19:25.600 回答