【问题标题】:SQL 'Time' C# Equivalent - System.TimeSpan does not workSQL '时间' C# 等效项 - System.TimeSpan 不起作用
【发布时间】:2013-03-23 21:54:07
【问题描述】:

好吧,我正在尝试从数据库中检索数据,列名是“EventTime”,数据类型为 time(7),以下是我的 C# 代码:

[Column(IsDbGenerated = true)]
public TimeSpan EventTime { get; set; }

我四处搜索,似乎 TimeSpan 确实相当于时间,但是,当我尝试运行该代码时,它仍然会导致异常,所有其他列都加载正常

有没有人遇到过类似的问题?

编辑:这是来自“10:34:00”列的数据示例

我能得到的唯一例外细节是模糊的: “异常详细信息:System.InvalidCastException:指定的转换无效。” MSDN 在这里指定 TimeSpan 是合适的数据类型http://msdn.microsoft.com/en-us/library/ms131092.aspx?PHPSESSID=lm71lj7i6gj5fjtebtb2srl4n3

【问题讨论】:

  • Timespan 只是一个持续时间/经过的时间.. 它不是一个时间点 :) 见 James Hill 的回答
  • it still causes an exception 并且异常消息是...?
  • TimeSpan 给你一个间隔,而不是一天中的时间。将 James 的答案标记为正确。
  • 好的,我终于明白每个人所说的时间流逝是什么意思了,我修复了 SQL 中的数据类型,James 的回答成功了,感谢大家的时间和耐心

标签: c# .net sql-server linq-to-sql


【解决方案1】:

根据您提供的信息,我建议使用System.DateTime

[Column(IsDbGenerated = true)]
public DateTime EventTime { get; set; }

注意:附加信息和列中的数据样本会有所帮助。

【讨论】:

  • 嘿,詹姆斯,谢谢你的回答,非常感谢,但是这也没有起到作用,我添加了一些额外的信息以防它有帮助(虽然我怀疑它有,抱歉)
  • 好的,我明白了问题所在(感谢 cmets),SQL 中的“时间”数据类型是一个范围,所以它与我持有的数据无关,我将数据类型固定在SQL 和你的回答就像一个魅力,谢谢!
猜你喜欢
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多