在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?
答案 0 :(得分:3)
您目前正在使用'YYYYIW'
格式化,这是4位数年份,然后是ISO周年。我怀疑你想要ISO周年,然后是ISO周年。
Oracle documentation对此非常不清楚,但您应该尝试 'IYYYIW'
作为格式字符串。它使用“基于ISO标准的4位数年份”(IYYY
)。
(我正试图在sqlfiddle上运行它以查看它是否有效,但此刻它已挂起......)