获取java.sql.SQLDataException:ORA-01858:找到了数字所在的非数字字符

时间:2014-12-27 13:22:09

标签: java oracle

我正在尝试运行以下查询我发现一个非数字字符被发现,这里的数字是预期的查询

select * from schedule where to_date(SHDL_STRT_TIME,'dd-MON-yy HH24:mi:ss')                                            
IN('11-Jan-15 20:30:00','11-Jan-15 08:00:00','11-Jan-15 20:00:00')

shdl_strt_time属于DATE类型的对象,它在sqldeveloper中工作正常但是从应用程序中无法正常工作

请澄清我哪里出错,任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

SHDL_STRT_TIME已经是[{1}}类型,因此您无需使用DATE

但是TO_DATE()这就是你需要的东西!!!

同样TO_CHAR()将月份设为MON ...因此,JAN需要Mon

Jan

最后,优雅的解决方案可能是,

select * from schedule where to_char(SHDL_STRT_TIME,'dd-Mon-yy HH24:mi:ss')                                            
IN('11-Jan-15 20:30:00','11-Jan-15 08:00:00','11-Jan-15 20:00:00')

select * from schedule where SHDL_STRT_TIME IN(:DATE1, :DATE2, :DATE3) 中,使用JDBC绑定值。因为,java.sql.Date可能不是Mon非美国数据库!此外,如果您对其执行Jan,则可能会错过该索引。