为什么Oracle返回无效月份错误

Abd*_*enM 2 sql oracle timestamp

有人可以告诉我为什么这个SQL查询返回一个

ORA-01843. 00000 -  "not a valid month"
Run Code Online (Sandbox Code Playgroud)

我现在错了,但这应该是因为2018年不是有效的一天。09是有效月份。我认为..

select to_timestamp('2018-09-05 11:35:41', 'dd/MM/yyyy HH:mi:ss') from dual;
Run Code Online (Sandbox Code Playgroud)

我知道查询是错误的。我只想知道为什么不说not a valid day或类似的话。错误现在表明月份是错误的,这是错误的。

Gor*_*off 6

原因是因为Oracle试图变得聪明/有用。因此,它在解释:

select to_timestamp('2018-09-05 11:35:41', 'dd/MM/yyyy HH:mi:ss') from dual;
---------------------^ddMM
Run Code Online (Sandbox Code Playgroud)

20被解释为一个有效的一天。然后是月份。Oracle正在帮助忽略分隔符。因此,18是无效的月份。

尝试这个:

select to_timestamp('2012-2012', 'dd/MM/yyyy') from dual
Run Code Online (Sandbox Code Playgroud)