微软MSsql中时间戳timestamp类型如在C#中读取并且再次存储到另外一个msSQL中object obj=dt.Rows[0]["timestamp1"];//此时是从数据库mssql中读出来的时间戳格式,值为:{byte[8]} [0]: 0 [1]: 0 [2]: 0 [3]: 0 [4]: 0 [5]: 4 [6]: 114 [7]: 198我用C#接收时,obj要转化成相应的类型,我如何转化,用什么类型转化
/// <summary> /// 用于微软的 timestamp 时间戳,比较时传入这个字段进去比较 字节数组转化成字符串 精典 彭定山 /// </summary> /// <param name="byte_">字节数组</param> /// <returns>转化成字符串,十六进制</returns> public string byteToString(byte[] byte_) { // Convert.ToBase64String(byte_);//这个方法是 测试接口的转换方法 网页中默认的测试就是用的这个转化的 //默认为0的表示方法:0x0000000000000000 //注意:数据库中的调用比较方法是不加单引号的:SELECT unitcode,unitname,cityid,unitsort,msTimestamp FROM zjytUnitCodeName WHERE msTimestamp>0x0000000000000000 if (byte_ == null || byte_.Length < 1) { return "0x0000000000000000";//一定要这样,不然 sql语句的组合变成了 msTimestamp> 就报错了,因为它相当于是个序列性的数字 } else { string abc5 = "0x" + BitConverter.ToString(byte_).Replace("-", ""); return abc5; } }
C#自己有转换时间的函数,转换成时间格式后传入sql保存即可sqlserver也有,用C#转字符串,格式化成数据库里存储的格式,当字符串保存,sqlsever会自动转成时间。另外,如果两个数据库是可以相互访问的,那么可以直接用sql语句例如 bd1.tablename访问对应的表。 追问 微软时间戳是全数据库唯一的,改变一行任何数据都会变的,你的方法显然是不行的 追答 你这个追问和上面的问题不搭边啊。。。没人让你修改数据库时间格式的设置,而是调用format函数对时间进行格式化
没用过MsSQL,不过byte数组可以转成string,在Encoding类下有个系统方法叫GetString,参数是个byte数组,可以把byte数组转成string,之后你再转成datetime类型保存应该就可以了。