首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要存储值> 24:00:00的.Net Timespan,正确的SQL类型是什么?

要存储值> 24:00:00的.Net Timespan,正确的SQL类型是什么?
EN

Stack Overflow用户
提问于 2011-12-14 19:36:09
回答 10查看 125.4K关注 0票数 220

我正在尝试在SQL TimeSpan 2008 R2中存储.Net TimeSpan

EF Code First似乎建议将其存储为SQL中的Time(7)

但是,.Net中的TimeSpan可以处理比24小时更长的时间。

在SQL TimeSpan中存储.Net TimeSpan的最佳方式是什么?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-12-14 19:53:55

我会将它作为BIGINT存储在数据库中,并且我会存储刻度数(例如,TimeSpan.Ticks属性)。

这样,如果我想在检索TimeSpan对象时获得它,我可以只执行TimeSpan.FromTicks(value),这将是很容易的。

票数 242
EN

Stack Overflow用户

发布于 2011-12-15 20:42:19

谢谢你的建议。因为在SQL server中没有等效项。我简单地创建了第二个字段,它将TimeSpan转换为ticks,并将其存储在DB中。然后,我阻止存储TimeSpan

代码语言:javascript
复制
public Int64 ValidityPeriodTicks { get; set; }

[NotMapped]
public TimeSpan ValidityPeriod
{
    get { return TimeSpan.FromTicks(ValidityPeriodTicks); }
    set { ValidityPeriodTicks = value.Ticks; }
}
票数 67
EN

Stack Overflow用户

发布于 2014-02-18 09:18:09

如果您不必存储超过24小时,则可以只存储time,因为SQL Server2008和更高版本的映射是

time (SQL Server) <-> TimeSpan(.NET)

如果您只需要存储24小时或更短时间,则无需转换。

来源:http://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx

但是,如果你想存储超过24小时的数据,你需要以节拍存储它,检索数据,然后转换成TimeSpan。例如

代码语言:javascript
复制
int timeData = yourContext.yourTable.FirstOrDefault();
TimeSpan ts = TimeSpan.FromMilliseconds(timeData);
票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8503825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档