Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中将字节[]转换为日期时间?_C#_Sql Server_Datetime_Bytearray - Fatal编程技术网

如何在C#中将字节[]转换为日期时间?

如何在C#中将字节[]转换为日期时间?,c#,sql-server,datetime,bytearray,C#,Sql Server,Datetime,Bytearray,我在数据库中有一个TimeStamp类型的字段,它在c#code中转换为byte[],我需要将它转换为DateTime值。 所以我想把字节数组转换成DateTime 已使用此代码: byte[] byteValue = someValue; long longVar = BitConverter.ToInt64(byteValue); DateTime dateTimeVar = DateTime.FromBinary(longVar); 这样可以吗?中的时间戳列(现在称为rowversion

我在数据库中有一个TimeStamp类型的字段,它在c#code中转换为byte[],我需要将它转换为DateTime值。 所以我想把字节数组转换成DateTime

已使用此代码:

byte[] byteValue = someValue;
long longVar = BitConverter.ToInt64(byteValue);
DateTime dateTimeVar = DateTime.FromBinary(longVar);

这样可以吗?

中的时间戳列(现在称为rowversion)不能转换为日期时间值-它纯粹是服务器分配的单调递增值。

不,这是不正确的

FromBinary
方法使用使用
ToBinary
方法创建的长值。它包含
Kind
Ticks
组件,而这不是数据库时间戳包含的内容

使用
BitConverter
获取long值是正确的,但是您必须获取时间戳的时间原点,并将long值添加为正确的单位。假设它是MySQL数据库的时间戳,IIRC是1980-01-01的毫秒数:

long longVar = BitConverter.ToInt64(byteValue, 0);
DateTime dateTimeVar = new DateTime(1980,1,1).AddMilliseconds(longVar);

为什么首先要将时间戳转换为字节[]?在不知道字节[]来自何处的情况下,您可能必须处理尾数问题。这取决于“确定”的含义。我从未尝试过这种方法,但它似乎不是一种从数据库检索日期和时间的特别直观的方法。我假设SQL Server(特别是如果您的数据访问层没有自动转换为DateTime值)@Srinivas,这不是我的决定,它是由生成代码的第三方工具完成的,例如codesmith。那么,它与DateTime无关?那么为什么它被用于,特别是,为什么它与日期时间值或概念相关联呢?(这个问题可能不太准确,但一直以来我都相信,我不确定我是否在什么地方读过它,它在某种程度上与datetime有关)@george_test——基本上,它的名字很糟糕——这就是为什么现在更正确地称它为“rowversion”,而不是“timestamp”。它(在SQL Server中)与时间没有任何关系,除了(如前所述)单调增加。thnx thnx和thnx再次增加。我添加了另一个日期类型的列,现在我确实在使用它。thnx Guffa,我正在尝试BitConverter方法中缺少这个nowstartIndex参数。应该是位转换器。ToInt64(字节值,0)检查@AliHasan:当然可以。谢谢你发现了,我更正了答案。