C# 用C语言将SQL Server中的十六进制值转换为datetime#

C# 用C语言将SQL Server中的十六进制值转换为datetime#,c#,sql-server,datetime,hex,converters,C#,Sql Server,Datetime,Hex,Converters,我需要将8个字节从十六进制值转换为C#中的新日期时间。该函数的作用应与SQL Server中的相同 我将十六进制值作为字符串“0000AC050000000”或字节列表: ["0", "0", "172", "5", "0", "0", "0", " 0 ",] 从那时起,我需要获得日期“2020-07-27 00:00:00:000”

我需要将8个字节从十六进制值转换为C#中的新日期时间。该函数的作用应与SQL Server中的相同

我将十六进制值作为字符串“0000AC050000000”或字节列表:

["0", "0", "172", "5", "0", "0", "0", " 0 ",]
从那时起,我需要获得日期“2020-07-27 00:00:00:000”。SQL Server的转换可以完美地工作,只需8个字节即可恢复多达毫秒的时间。如图所示,使用以下命令

            string input = "0000AC0500000000";

            int daysFrom1900 = int.Parse(input.Substring(0,8),NumberStyles.HexNumber);
            int ticksFromMidnight = int.Parse(input.Substring(8), NumberStyles.HexNumber);
            DateTime year1900 = new DateTime(1900, 1, 1);
            DateTime date = year1900.AddDays(daysFrom1900).AddTicks(ticksFromMidnight*(10/3.0));

这是正确的,但要添加毫秒,必须这样做(sql server):DateTime date=year1900.AddDays(daysFrom1900.AddTicks(ticksFromMidnight*(10/3.0));好奇。首先,为什么要用这种形式?比如@Matt,我这里有一些真正的问题-主要是“SQL server日期/时间类型有什么问题?”从磁盘恢复二进制日期