【问题标题】:sql not a valid month error in sql command linesql 命令行中的 sql not a valid month 错误
【发布时间】:2020-04-21 00:55:55
【问题描述】:

实际上,我试图在 Oracle db 中获取日期范围内的所有列,并且我在 SQL Developer 中成功地这样做了,但是当我在 SQL 命令行界面中执行相同的代码时出现错误

ORA-01843 : 无效月份

我知道它是一个以 to_date 格式出现的错误,但它会按照我的预期在 SQL 开发人员中执行,但不会在 SQL 命令行中执行。为什么会这样??

select to_date('01/04/2020') from dual;

即使这个命令也不起作用。

我已经尝试了to_date 方法转换的所有格式方法,我检查了nls_date_format,它显示了'DD-MM-RR'

【问题讨论】:

  • 感谢我没有输入命令来更改会话,但我的问题是我构建的查询在 sql developer 中完全符合我的要求,但它在 sql 命令行中不起作用,所以当我添加了一个查询来改变 sql 命令行中的会话它工作正常

标签: oracle11g oracle-sqldeveloper sqlcommand


【解决方案1】:

我建议您始终提供适当的格式掩码。不要依赖 Oracle 隐式转换和猜测您想要做什么。

看起来像'01/04/20' 的字符串可能是任何东西,具体取决于您使用的格式(dd/mm/yyyy/dd/mmmm/yy/dd ... 所有这些都有效,但只有一个是正确的)。

SQL> alter session set nls_Date_format = 'dd-mm-rr';

Session altered.

SQL> select to_date('01/04/2020', 'dd/mm/yyyy') result from dual;

RESULT
------------------------------
01-04-20

SQL>

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 2019-12-13
    相关资源
    最近更新 更多