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

标签 sql oracle timestamp

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

ORA-01843. 00000 -  "not a valid month"

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

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

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

最佳答案

原因是因为 Oracle 试图变得聪明/乐于助人。所以,它正在解释:

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

20 被解释为有效的一天。接下来是月份。 Oracle 正在尝试忽略分隔符。因此,18 是无效月份。

试试这个:

select to_timestamp('2012-2012', 'dd/MM/yyyy') from dual

关于sql - 为什么 Oracle 返回无效月份错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57360272/

相关文章:

MySQL GROUP BY 优化 - InnoDB 与 MyISAM?

sql - 运算符不存在 : interval > integer

java - 长时间运行查询超时

php - 如何使用php在两个日期之间生成随机日期?

c# - 如何在 C# 应用程序上连接到 sql server

sql - 字段不为空的行的 Access 计数

sql - 缺少右括号错误(ORA-00907 : missing right parenthesis)

oracle - Oracle 12c中没有用户名HR

MySQL 数据类型 - 与 DATETIME 条目相比,分别存储 DATE 类型和 TIME 类型是否可以为每条记录节省 2 个字节?

xcode - 如何在 Xcode 中使用 LLDB 打印时间戳?