【问题标题】:System.InvalidCastException: Specified cast is not validSystem.InvalidCastException:指定的强制转换无效
【发布时间】:2012-05-08 20:12:36
【问题描述】:

我从数据库中检索了一个表,其中包含 sql server 中“时间”类型的列,我尝试将其分配给 DateTime 变量,但出现此错误: System.InvalidCastException:指定的强制转换无效。

这是我的 C# 代码:

DateTime StartTime = (DateTime)dt.Rows[i]["startTime"];

知道“startTime”列的类型是“time”,我可以在数据库中更改它。 有什么帮助吗??

【问题讨论】:

  • 查看this link。看起来您需要使用时间跨度。
  • 德文是对的。在 .NET 中,SQL Server 2008 时间类型映射到 TimeSpan 对象。

标签: c# sql-server datetime


【解决方案1】:
DateTime StartTime = Convert.ToDateTime(dt.Rows[i]["startTime"].ToString());

如果你知道它可能是空的..

DateTime StartTime = (dt.Rows[i]["startTime"] == DBNull.Value ? DateTime.MinValue : Convert.ToDateTime(dt.Rows[i]["startTime"].ToString()));

【讨论】:

    【解决方案2】:

    您应该可以将其转换为 TimeSpan:

    var startTime = dt.Rows<TimeSpan>("startTime");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 2013-08-27
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多