关于classes12.jar是如何调用Oracle的sql

fatfoxz 2008-06-27 05:54:03
目前我们遇到这样一个情况,Oracle上有一个生成View的Sql,其中有一个where条件:StartDate > '2006-01-01',其中DB中的StartDate是Date型的,DB服务器是windows的,奇怪的是用windows系统作Web服务器,则可以正常执行,用Solaris10系统作Web服务器就出现类型转换异常。
把该where条件改成TO_CHAR(StartDate, 'YYYY-MM-DD') > '2006-01-01'则正常。

我们是在windows下开发而后要求在Solaris10下正常运行,与以上问题类似的情况很多,不明白为什么在不同的应用系统下访问相同的DB服务器,并执行相同的SQL结果会不同,所使用之classes12.jar也是相同的。

以上,已经调查很久了,但没能找到太多有用的东西,如果可以,请帮忙解释一下。谢谢
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bootupnow 2008-06-28
  • 打赏
  • 举报
回复
oracle上日期不经常用to_xxx来转换么?
new_bird_0001 2008-06-27
  • 打赏
  • 举报
回复
可以采用to_date():where startdate>to_date('20060101','yyyymmdd'),在字段上使用函数不是一种很好的习惯,这种情况下,oracle不会使用索引来进行查找,除非使用函数索引,否则sql语句执行效率不高.
在不同系统中的情况不同,是由于oracle连接的默认日期格式不同造成的
老紫竹 2008-06-27
  • 打赏
  • 举报
回复
where条件改成TO_CHAR(StartDate, 'YYYY-MM-DD') > '2006-01-01'则正常。

这个是标准用法,不用猜测了。

1 用to_char
2 用 PreparedStatement 然后setDate() 进行赋值

推荐第二种
fengyifei11228 2008-06-27
  • 打赏
  • 举报
回复
我们的是DB在Solaris10下
开发在windows下,出现的情况和你的恰好相反
在windows下用StartDate > '2006-01-01'查询出异常,而在Solaris10没有问题

我想会不会是因为Date型在windows和Solaris10的系统平台下格式不同
结果在跨平台访问时出现类型转换异常

而相同平台下则不用转换

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧