27

具体的には、時間:分だけが必要ですが、.NET TimeSpanオブジェクトがあるとすると、それをSQL(CE)データベースにどのように保存する必要がありますか?

4

4 に答える 4

39

ティック数を表すには long を使用することをお勧めします。これはTimeSpanが内部表現として使用するものです。これにより、 Timespan.FromTicks()メソッドを使用してオブジェクトを簡単に再構成し、 Timespan.Ticks プロパティを使用してデータベースに出力できます。.NET の時間の最小単位はティックで、100 ナノ秒に相当します。

于 2009-04-13T18:39:23.723 に答える
2

varcharとして保存します。を使用してSQLに保存しますTimeSpan.ToString()。SQLから次のように読み取ります。

TimeSpanObj = TimeSpan.Parse(fieldValue)
于 2010-08-31T14:48:27.277 に答える
1

SQL CE には時刻型やユーザー定義型がないため、datetime または分を表す int を選択できます。保存する必要がある最大時間が 23:59 = 23 * 60 + 59 = 1439 = 0 分から始まる 1 日の分数である場合、smallint はその範囲に対応する最小の整数型です。

時間と分を別の列に tinyint として格納する誘惑に抵抗してください。これは 1 つの smallint と同じスペースを使用しますが、時間の計算ごとに時間を 60 倍して分を加算する必要があり、すべての計算でorder by1 つではなく 2 つの列が必要になります。

分として保存します。ディスプレイでは、分を時間と分に分けることができます

select floor( absminutes / 60 ) as hours, absminutes % 60 as minutes,
from some table
order by absminutes; 

1日の 1439 分と 1 時間の 0 ~ 59 分を区別する場合は、列minutesに 、または(絶対的な分)という名前を付けます。absminutes

データベース値から Timespan オブジェクトに変換するには、Timespan(int, int, int)このようなctor を使用するnew TimeSpan( floor(absminutes / 60 ), absminutes % 60, 0)か、(より良い) ctor Timespan(long)with を使用しnew Timespan( absminutes * TimeSpan.TicksPerMinute )ます。

Timespan オブジェクトからデータベースを挿入または更新するには、absminutes を に設定しsomeTimespan.TotalMinutes % 1440ます。

于 2009-04-05T04:52:50.947 に答える