2017-02-23 5 views
2

私はTimeSpanフィールドをMySQLデータベースにNHibernateで保存しています。流暢なマッピングは次のようになります。nhibernateはTimeSpanをMysqlにどのように格納しますか?

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

特別な型は設定されていません。

DBでは、13:00と14:00にそれぞれDBの468000000000と504000000000が表示されます。フィールドタイプはBIGINTです(int64)

ストアドプロシージャでは、2つのタイムスタンプ間の時間差を計算する必要があります。彼らは

は、例えば最初の番号を取ることはありません除き

番号が経過しuSecondsの数を表しているように見える...

:4680億または4.68e + 11

13時間です4.68e + 10マイクロ秒...

これは本当に1/100thsナノ秒の経過時間を格納しているのですか?

+0

この動作は、マッピングで指定された 'type'に依存することに注意してください。 .Netの 'TimeSpan'のデフォルト値はdb型' Int64'になります。しかし、あなたのデータベースがそれをサポートしているならば、それを 'Time'に変更することができます。 [(最新ではない)リスト](http://nhibernate.info/doc/nhibernate-reference/mapping.html#mapping-types-basictypes)を参照するか、[NHibernate code](https:// github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/NHibernateUtil.cs)。 –

答えて

0

だから、実際には1ナノ秒の100分の1を保存します。

3.6e + 10で除算して、時間単位で値を取得します。

ニート!

関連する問題