【问题标题】:Convert hex value from SQL Server to datetime in C#在 C# 中将十六进制值从 SQL Server 转换为日期时间
【发布时间】:2021-01-04 12:20:45
【问题描述】:

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

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

["0", "0", "172", "5", "0", "0", "0", " 0 ",]

从中我需要获取日期“2020-07-27 00:00:00:000”。 SQL Server 的转换工作完美,只需 8 个字节即可恢复到毫秒。如图convert function in SQL Server

【问题讨论】:

  • 很好奇。为什么你一开始就有这种形式?
  • 像@Matt 一样,我在这里有一些真正的问题 - 主要是“SQL Server 日期/时间类型出了什么问题?”
  • 从磁盘恢复二进制日期

标签: c# sql-server datetime hex converters


【解决方案1】:

使用以下

            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));
猜你喜欢
  • 2011-05-26
  • 2022-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多