Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL Navigator抛出“ORA-01834:不是有效月份”,但查询在其他应用程序中运行_Oracle_Sql Navigator - Fatal编程技术网

Oracle SQL Navigator抛出“ORA-01834:不是有效月份”,但查询在其他应用程序中运行

Oracle SQL Navigator抛出“ORA-01834:不是有效月份”,但查询在其他应用程序中运行,oracle,sql-navigator,Oracle,Sql Navigator,我已经多次记录了这个错误,但我知道我没有办法避免,我必须摆脱它 有时我会在SQL Navigator 6.1 XPert Edition中运行查询,它会抛出: ORA-01843:不是有效月份 但是,如果我在同一个数据库中运行相同的查询,但在其他应用程序iAqua DataStudio中运行,则效果很好。这只是个别情况 这可能是一些配置问题 编辑:此查询存在以下问题: 始终指定日期格式,切勿采用该格式或使用默认格式。例如: insert into mytable (mydate) values

我已经多次记录了这个错误,但我知道我没有办法避免,我必须摆脱它

有时我会在SQL Navigator 6.1 XPert Edition中运行查询,它会抛出:

ORA-01843:不是有效月份

但是,如果我在同一个数据库中运行相同的查询,但在其他应用程序iAqua DataStudio中运行,则效果很好。这只是个别情况

这可能是一些配置问题

编辑:此查询存在以下问题:


始终指定日期格式,切勿采用该格式或使用默认格式。例如:

insert into mytable (mydate) values (to_date('02/28/2011', 'MM/DD/YYYY'));

始终指定日期格式,切勿采用该格式或使用默认格式。例如:

insert into mytable (mydate) values (to_date('02/28/2011', 'MM/DD/YYYY'));

要使查询在所有环境中都具有故障安全性,必须更改此行:

and dt_coleta = '05/12/2011'  

假设你指的是12月5日,而不是5月12日


顺便问一下:estab和atributo2列的数据类型是什么。如果这些是数字,则应删除参数周围的单引号。这是另一种隐式数据转换,例如,防止在这些列上使用索引。

要使查询在所有环境中都是安全的,您必须更改此行:

and dt_coleta = '05/12/2011'  

假设你指的是12月5日,而不是5月12日


顺便问一下:estab和atributo2列的数据类型是什么。如果这些是数字,则应删除参数周围的单引号。这是另一种隐式数据转换,例如,阻止在这些列上使用索引。

不幸的是,即使使用“截止日期”也不能保证成功。但我强烈建议您始终注意游戏中的日期格式。例如,使用SQL*Developer,这可以:

alter session set nls_date_format='yyyy-mon-dd hh24:mi:ss.ddd';

select * from nns.nns_logGER WHERE LOG_DATE >= '2014-jul-30 14:47:16.211';
但这在ORA-01834中失败:月日与朱利安日期错误冲突:

alter session set nls_date_format='yyyy-mon-dd hh24:mi:ss.ddd';

select * from nns.nns_logGER WHERE LOG_DATE >= '2014-jul-30 14:47:16.210';
请注意,我只更改了最后一个数字。使用to_date没有帮助:

select * from nns.nns_logGER WHERE LOG_DATE >= 
to_date('2014-jul-30 14:47:16.210','yyyy-mon-dd hh24:mi:ss.ddd');
以同样的方式失败


我希望有更好的消息,但我认为这一定是内部问题。

不幸的是,即使使用TO_DATE也不能保证成功。但我强烈建议您始终注意游戏中的日期格式。例如,使用SQL*Developer,这可以:

alter session set nls_date_format='yyyy-mon-dd hh24:mi:ss.ddd';

select * from nns.nns_logGER WHERE LOG_DATE >= '2014-jul-30 14:47:16.211';
但这在ORA-01834中失败:月日与朱利安日期错误冲突:

alter session set nls_date_format='yyyy-mon-dd hh24:mi:ss.ddd';

select * from nns.nns_logGER WHERE LOG_DATE >= '2014-jul-30 14:47:16.210';
请注意,我只更改了最后一个数字。使用to_date没有帮助:

select * from nns.nns_logGER WHERE LOG_DATE >= 
to_date('2014-jul-30 14:47:16.210','yyyy-mon-dd hh24:mi:ss.ddd');
以同样的方式失败


我希望有更好的消息,但我认为这一定是内部问题。

@Ben当a收到此错误时,即使是一个简单的select*from。。。扔掉它!!somuser2是对的。我相信Oracle的日期格式默认为DD-MON-YY,所以是“2010年1月28日”。如果您的日期不是该格式,Oracle默认情况下将不接受该格式,因此请将其改写为您提供的格式。其他应用程序可能会隐式识别2010年1月28日,但Oracle不会。此外,当您遇到诸如2010年1月1日之类的日期时,会有更多的混淆。是M/D/Y格式还是D/M/Y?不是查询错误,也不是数据库错误。这是SQL Navigator的一个错误。在其他应用程序中,查询运行正常!!问题是navigator不理解的格式。我不会更改我的查询,因为在我的php应用程序中它运行正常。@Márcio:在SQL Navigator中它不是一个错误。这无疑是查询中从字符串到日期的隐式转换的问题。请发布您的查询。@Márcio:通过显示那个简单的查询来证明它@Ben当a遇到这个错误时,即使是一个简单的select*from。。。扔掉它!!somuser2是对的。我相信Oracle的日期格式默认为DD-MON-YY,所以是“2010年1月28日”。如果您的日期不是该格式,Oracle默认情况下将不接受该格式,因此请将其改写为您提供的格式。其他应用程序可能会隐式识别2010年1月28日,但Oracle不会。此外,当您遇到诸如2010年1月1日之类的日期时,会有更多的混淆。是M/D/Y格式还是D/M/Y?不是查询错误,也不是数据库错误。这是SQL Navigator的一个错误。在其他应用程序中,查询运行正常!!问题是navigator不理解的格式。我不会更改我的查询,因为在我的php应用程序中它运行正常。@Márcio:在SQL Navigator中它不是一个错误。这无疑是查询中从字符串到日期的隐式转换的问题。请发布您的查询。@Márcio:通过显示那个简单的查询来证明它!我想这些都是数字,因为我无法访问,这是一个视图。无论如何,谢谢你的解释,我会更加注意的。我想这些是数字,因为我无法访问它,这是一个视图。无论如何,谢谢你的解释,我会更加注意的。