甲骨文:ISO周,错误答案

时间:2016-07-05 14:42:39

标签: oracle date

在Oracle 11和Oracle 12中,发出以下选择:

SELECT TO_CHAR((TO_DATE('19720101','YYYYMMDD')), 'YYYYIW') || ' ' || TO_CHAR((TO_DATE('19721230','YYYYMMDD')), 'YYYYIW') AS ERRATO FROM DUAL;

我明白了:

197252 197252

我期待的是:

197152 197252 or 197153 197252

为什么我得到相同的结果197252 197252?

1 个答案:

答案 0 :(得分:3)

您目前正在使用'YYYYIW'格式化,这是4位数年份,然后是ISO周年。我怀疑你想要ISO周年,然后是ISO周年。

Oracle documentation对此非常不清楚,但您应该尝试 'IYYYIW'作为格式字符串。它使用“基于ISO标准的4位数年份”(IYYY)。

(我正试图在sqlfiddle上运行它以查看它是否有效,但此刻它已挂起......)