2017-02-23 55 views
2

我有一个由NHibernate存储在MySQL数据库中的TimeSpan字段。流畅的映射如下所示:nhibernate如何将TimeSpan存储在Mysql中?

Map(x => x.StartTime); 
Map(x => x.EndTime); 

没什么特别的,没有特殊的类型集。

在DB中,13:00和14:00分别在DB中显示468000000000和504000000000。字段类型是BIGINT(int64)

在存储过程中,我需要计算两个时间戳之间的小时差。

的数字似乎代表经过uSeconds的数量...

除非他们不

先取号,例如:4680亿或4.68e + 11

13小时是4.68e + 10微秒...

SO是真的存储经过时间为1/100秒纳秒?

+0

请注意,此行为取决于在映射上指定的“类型”。没有为.Net指定一个'TimeSpan'默认为db类型'Int64'。但是,如果您的数据库支持它,您可以将其更改为“时间”。查看[(不是最新)列表](http://nhibernate.info/doc/nhibernate-reference/mapping.html#mapping-types-basictypes),或者查看[NHibernate代码](https:// github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/NHibernateUtil.cs)。 –

回答

0

因此,它实际上存储了1/100秒的纳秒。

除以3.6e + 10得到以小时为单位的数值。

整洁!