首页 新闻 会员 周边

将参数值从 DateTime 转换到 Byte[] 失败。

0
悬赏园豆:20 [已解决问题] 解决于 2016-11-09 12:44

 

如上图,28列的字段类型是timestamp,在做转换是我直接转换为datetime,但是在对该表进行添加时,调试出现了上图的:将参数值从 DateTime 转换到 Byte[] 失败。球各位大神指教。

A.I.N.Y的主页 A.I.N.Y | 初学一级 | 园豆:2
提问于:2016-11-07 15:08
< >
分享
最佳答案
0

DateTime 和Timestamp 不是相同类型。

如果这里是byte[]那你也不能给Datetime类型;

如果是byte[]通常应该是Int 1970的毫秒的表示;

总毫秒数=(dateTime-new DateTime(1970,1,1)).TotalMilliSeconds;

byte[]   BitConvert即可(看规定是大端还是小端,然后确定是否反序);

收获园豆:20
花飘水流兮 | 专家六级 |园豆:13560 | 2016-11-07 15:19

我知道这两个类型不一样,但是我在给字段转换的时候该怎么转换,

A.I.N.Y | 园豆:2 (初学一级) | 2016-11-07 15:20

@A.I.N.Y: 上述已经给出了Datetime=》Byte[]的方法;TotalMilliSeconds好像是8字节,你需要先强转到int之类的4字节。

花飘水流兮 | 园豆:13560 (专家六级) | 2016-11-07 15:34

要带时区,不然会差8个小时。

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-07 16:41
其他回答(1)
0

那说明你的userModel中28列的字段类型设计错了

刘宏玺 | 园豆:14020 (专家六级) | 2016-11-07 15:53

我字段设计的时候是timestamp类型,在用生成器生成实体类的时候类型为datetime

支持(0) 反对(0) A.I.N.Y | 园豆:2 (初学一级) | 2016-11-07 15:54

@A.I.N.Y: 怕不是,你看下,如果是datetime类型就不会报错了,应该是生成byte[]类型了

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-11-07 15:55

@刘宏玺: 我看了的,是datetime,所以我才在后面转换为datetime

支持(0) 反对(0) A.I.N.Y | 园豆:2 (初学一级) | 2016-11-07 15:56

@A.I.N.Y: 那你这个是什么时候报的错呢?

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-11-07 15:57

@刘宏玺: 

就是这一行,是在SqlServerHelper这个类中,这个类是连接数据库以及一些方法

支持(0) 反对(0) A.I.N.Y | 园豆:2 (初学一级) | 2016-11-07 16:04

@A.I.N.Y: 那你还是把userModel中28列的字段类型换成 Byte[] 吧

timestamp对应c#的类型就是Byte[] 了

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-11-07 16:15

@刘宏玺: 我那个数据字典是从oracle里面拷过来的,估计有点问题,我现在直接把类型改为datetime了

支持(0) 反对(0) A.I.N.Y | 园豆:2 (初学一级) | 2016-11-07 16:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册