在 C# 中将十六进制值从 SQL Server 转换为日期时间

Posted

技术标签:

【中文标题】在 C# 中将十六进制值从 SQL Server 转换为日期时间【英文标题】:Convert hex value from SQL Server to datetime in C# 【发布时间】: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 日期/时间类型出了什么问题?” 从磁盘恢复二进制日期 【参考方案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));

以上是关于在 C# 中将十六进制值从 SQL Server 转换为日期时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在MVC C#中将文本框和下拉值从视图传递到控制器

我们如何在 C# 中将访问数据库(.mdb)导入 sql server 2008

VBScript - 在 SQL Server 中将 SHA1 存储为数字或二进制值

C# 十进制到 SQL Server 钱

SQL Server 中的 tinyint 到 C# 中的字节

关于使用C#将图片用二进制方式存储到sql server数据库中