在 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 转换为日期时间的主要内容,如果未能解决你的问题,请参考以下文章
我们如何在 C# 中将访问数据库(.mdb)导入 sql server 2008
VBScript - 在 SQL Server 中将 SHA1 存储为数字或二进制值