sql和c#中DateTime和Date转换问题:

Milianto 2016-01-11 04:35:17
我在sql数据库中定义了一张表里面的数据作业日期类型为date,我用c#代码用sql命令类插入数据时使用的datetime类型。但是插入结果失败是为什么呢?
public DateTime zuoyeriqi; //作业日期 这是我在C#中定义的变量,在一个结构体中定义的。

carddata.task[tasknum].zuoyeriqi = carddata.task[tasknum].begintime.Date; //这是作业日期的赋值语句

int result=DBHelper.ExceuteCommand ("insert into 作业信息表 (任务号,ID,开始时间,结束时间,门机号,有效斗数,无效斗数,开斗次数,闭斗次数, 失效斗数,标准斗数,奖励斗数,班次,作业日期,消耗电量,作业时长,停工时长,实际作业时长,平均每斗作业时长) VALUES(@tasknum,@idnum,@begintime,@endtime,@machnum,@validtimes, @invalidtimes,@opennum,@closenum,@shixiaodoushu,@sstandard,@jianglidou,@Bacni,@zuoyeshichang,@dianliang,@zuoyeshichang,@tinggongshichang,@shijizuoyeshichang,@pingjunzuoyeshichang)",parms );//这个是插入语句

作业信息表中定义为date类型就不截图了。

运行结果:在执行sql语句中发生异常:操作数类型冲突: real 与 date 不兼容。如果我把数据库中的作业日期列的变量类型改成datetime就能插入成功。这是为什么呢?C#的datetime 和sql里面的date不是兼容的吗?为什么会出现该类异常?
...全文
2434 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2016-02-04
  • 打赏
  • 举报
回复
你的sql貌似有问题 看了下 : 作业日期 对应了@zuoyeshichang
cwzy120 2016-01-25
  • 打赏
  • 举报
回复
Parameters 作业日期 赋值时 时间 用字符串类型
xingye2012 2016-01-25
  • 打赏
  • 举报
回复
先定位是C#报的错,还是数据库执行sql语句报的错
  • 打赏
  • 举报
回复
可以试试加参数时显式指定类型 Add(new SqlParameter("@xxx“, SqlDbType.Date)) 还是觉得字段顺序搞错了,不管是哪种日期不可能推断为real(float型)的,凭空冒出来的?
fuyanling1993 2016-01-25
  • 打赏
  • 举报
回复
很可能是你的类型不对应,导致插入失败,你最好在数据库里测试一下,可能会找到错误
changjiangzhibin 2016-01-21
  • 打赏
  • 举报
回复
1、参数赋值有问题 2、形参和实参匹配不对应
mlqxj35674 2016-01-13
  • 打赏
  • 举报
回复
用短日期格式插入就可以了,datetime.ToShortDateString()
  • 打赏
  • 举报
回复
你的insert里面我没找到你的zuoyeriqi…… 你的sql里面作业日期插入的数据是@zuoyeshichang
Justin-Liu 2016-01-12
  • 打赏
  • 举报
回复
看看你插入的每一列的数据跟它的列类型是不是对应的
  • 打赏
  • 举报
回复
看下你的cmd.Parameters
Milianto 2016-01-12
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
你的insert里面我没找到你的zuoyeriqi…… 你的sql里面作业日期插入的数据是@zuoyeshichang
我在前面把所有参数卸载parms集合里面,把每个变量前面都加上一个@,这样比较符合sql习惯吧!
猫霸 2016-01-11
  • 打赏
  • 举报
回复
直接把DateTime转换成Date类型的字符串就可以插入数据库。

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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