【问题标题】:Recordset to timespan记录集到时间跨度
【发布时间】:2014-01-17 10:13:45
【问题描述】:

我有一个表,它有一个名为 Shift_Start_Time 的 time(7) 类型字段

在创建记录集 RST 之后。

我想保留一段时间

TimeSpan  TT;
TT = RST.Fields("Shift_Start_Time").Value;

或 将其保持为整数毫秒

int int1;

int1 = RST.Fields("Shift_Start_Time").Value;

我该怎么做?我采取的每一步都会产生类似的错误。 例如:

Convert.ToInt64(RST.Fields("Shift_Start_Time").Value);

"Unable to cast object of type 'System.Byte[]' to type 'System.IConvertible'."

【问题讨论】:

  • 顺便说一句,您是指 RecordSet 还是 DataSet? RecordSet 是古老的,不应使用。
  • 我使用的是 ADODB.RecordSet 而不是数据集。
  • 是的,那是古老的 .NET 之前的东西。你应该进入 21 世纪。至少迁移到 ADO.NET,假设您不想一直跳转到 ADO.NET 实体框架。
  • 好的。谢谢你。我是初学者,正在学习每一位员工,感谢您的建议。
  • 是的,您不想从过去十多年的技术开始。

标签: c# sql-server-2012 adodb


【解决方案1】:

您必须将其用作Int64DateTimeOffset。代码可能如下所示:

var bytes = RST.Fields("Shift_Start_Time").Value as byte[];
var intVal = BitConverter.ToInt64(bytes, 0);
var dtOffset = new DateTimeOffset(intVal, new TimeSpan(-5, 0, 0));

在此示例中,我在TimeSpan 中为EST 使用了静态-5 偏移量。 See this article 了解更多详情。

【讨论】:

  • 为什么不直接转换到byte[](byte[]) RST.Fields("Shift_Start_Time").Value 永远不会是 null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多