Statement执行SQL语句时遇到的日期格式难题

yeliming 2006-12-29 11:16:53
业务场景是这样的,我们在与一个Delphi开发的现有系统做数据交换,数据库是Oracle 10g,Java服务端收到的都是一些已经由Delphi组装好的Insert语句,服务端这边调用Statement去执行这些语句的时候遇到一个日期格式的问题。

例如这一句:
INSERT INTO BUSI_LOG(KEYNO,USER,OP,OP_DATE) VALUES('88/100202/00000','88','do something','2006-12-29')
在Delphi上用ADO写入Oracle是正常的。

同样这句,放在Statement.executeUpdate中则出现"ORA-01861: 文字与格式字符串不匹配"的错误信息。

我在测试时把语句中的日期格式改成下面这样就一切正常:
INSERT INTO BUSI_LOG(KEYNO,USER,OP,OP_DATE) VALUES('88/100202/00000','88','do something','29-DEC-2006')

-_-# 无比郁闷中,由于是数据交换系统,所以我们不可能对SQL进行拆分→转化→重组的笨方法。不知道有什么办法能够让Statement能够识别"YYYY-MM-DD"这样格式的日期?Oracle JDBC驱动是10.2.0.2用过了,10.1.0.2也用过了,…………

...全文
177 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
歪嘴鱼 2006-12-29
  • 打赏
  • 举报
回复
用delphi写个dll,然后用jni去调用,这样铁定行,就是绕点弯
yeliming 2006-12-29
  • 打赏
  • 举报
回复
是datetime类型。
setTimestamp没法用上,因为SQL语句已经由现有程序拼装好,没有parameter,所以setTimestamp函数所需的parameterIndex这个参数,我没法弄出来
myzee 2006-12-29
  • 打赏
  • 举报
回复
to_date('你的时间','YYYY-MM-DD HH24:MI:SS')
jihanzhong 2006-12-29
  • 打赏
  • 举报
回复
数据库是datetime类型吗? 建议用PreparedStatement 然后setTimestamp方法
hcx_2008 2006-12-29
  • 打赏
  • 举报
回复
干脆写一个日期事件格式化函数,为了减少开发工作的量,可以用java.text包中的DateFormat进行快速开发
歪嘴鱼 2006-12-29
  • 打赏
  • 举报
回复
可以考虑用一个正则表达式来做查找替换
lixiaoxue85 2006-12-29
  • 打赏
  • 举报
回复
的确很棘手,不能拆分→转化→重组,帮顶吧

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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