使用Oracle SQL时,为什么选择语句
select to_char(to_date('31-DEC-18'), 'YYYY-IW')
from dual;
Run Code Online (Sandbox Code Playgroud)
返回“ 2018-01”?
我了解'IW'使用的是我想要使用的ISO标准,但是据我的研究可知,根据ISO标准,2018年12月31日发生在2019年的第1周。所以我理解为什么select语句为“ IW”返回“ 01”,但是为什么它为“ YYYY”返回“ 2018”?语句不应该返回'2019-01'吗?
对于我正在使用的数据,最好使用IW而不是WW。
IYYY根据Oracle文档,您可能需要的是ISO年格式:
SQL> select to_char( date '2018-12-31', 'IYYY-IW')
2 from dual;
TO_CHAR
-------
2019-01
Run Code Online (Sandbox Code Playgroud)
顺便说一句,通过撰写本文,to_date('31-DEC-18')您依赖于一些假设,这些假设可能并不总是正确的。ANSI格式是一种更安全的日期写方法:date '2019-12-31'