c# 数据保存到oracel中问题

kingagile 2015-03-12 02:44:57
现在有一个将 mssql的数据转存到orcale,我把mssql的数据先读取到datatable中然后拼 insert into 字符串
如:INSERT INTO personinfo (sPersonID ,sPersonName ,dAddTime, dUpdateTime)
values (:sPersonID ,:sPersonName ,:dAddTime, :dUpdateTime)
但是现在问题来了,最后提交出现的错误ORA-01843: not a valid month ,mssql中的日期是这样的'2015-01-12 03:32:35',
请问怎么处理这个问题,ORACLE中dAddTime, dUpdateTime是TIMESTAMP类型,mssql中是Datatime类型
...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-03-12
  • 打赏
  • 举报
回复
就是说,如果你传入的参数是varchar类型,那么你需要执行to_timestamp转换类型 而如果参数本身就是timestamp类型,就不要转换了
於黾 2015-03-12
  • 打赏
  • 举报
回复
此外,如果你参数已经指定了是timestamp类型,那么可能不需要显式调用转换函数也可以,显式调用反而不对,需要测试一下
於黾 2015-03-12
  • 打赏
  • 举报
回复
引用 3 楼 kingagile 的回复:
pl/sql 中这样转换to_timestamp('2015-03-12 03:32:35' ,'yyyy-mm-dd hh24:mi:ss') 是没有问题的,现在就是有参数代替报错
to_timestamp('','')是语法部分,是数据库里的函数,你需要把这个内容拼接到SQL语句里,而不是传进参数里 而只应该把时间字符串作为参数
yanran_hill 2015-03-12
  • 打赏
  • 举报
回复
使用kettle吧,一个基于Java的开原的ETL工具,或者其它的ETL工具
kingagile 2015-03-12
  • 打赏
  • 举报
回复
pl/sql 中这样转换to_timestamp('2015-03-12 03:32:35' ,'yyyy-mm-dd hh24:mi:ss') 是没有问题的,现在就是有参数代替报错
於黾 2015-03-12
  • 打赏
  • 举报
回复
INSERT INTO personinfo (sPersonID ,sPersonName ,dAddTime, dUpdateTime) values (:sPersonID ,:sPersonName ,to_date(':dAddTime','yyyy-mm-dd hh24:mi:ss'),to_date(' :dUpdateTime','yyyy-mm-dd hh24:mi:ss'))
於黾 2015-03-12
  • 打赏
  • 举报
回复
TIMESTAMP是什么类型? 不应该是Date类型才对吗 oracle中date类型需要转换 to_date("2014-1-1 0:0:0","yyyy-mm-dd hh24:mi:ss")

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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