微软MSsql中时间戳timestamp类型如在C#中读取并且再次存储到另外一个msSQL中

微软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要转化成相应的类型,我如何转化,用什么类型转化
最新回答
__宫雅沫つ

2024-11-26 06:29:50

/// <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;
}
}
信上诗两行

2024-11-26 01:30:16

C#自己有转换时间的函数,转换成时间格式后传入sql保存即可
sqlserver也有,用C#转字符串,格式化成数据库里存储的格式,当字符串保存,sqlsever会自动转成时间。

另外,如果两个数据库是可以相互访问的,那么可以直接用sql语句例如 bd1.tablename访问对应的表。
追问
微软时间戳是全数据库唯一的,改变一行任何数据都会变的,你的方法显然是不行的
追答
你这个追问和上面的问题不搭边啊。。。
没人让你修改数据库时间格式的设置,而是调用format函数对时间进行格式化
月影依风

2024-11-26 04:02:32

没用过MsSQL,不过byte数组可以转成string,在Encoding类下有个系统方法叫GetString,参数是个byte数组,可以把byte数组转成string,之后你再转成datetime类型保存应该就可以了。