具体的には、時間:分だけが必要ですが、.NET TimeSpanオブジェクトがあるとすると、それをSQL(CE)データベースにどのように保存する必要がありますか?
4 に答える
ティック数を表すには long を使用することをお勧めします。これはTimeSpanが内部表現として使用するものです。これにより、 Timespan.FromTicks()メソッドを使用してオブジェクトを簡単に再構成し、 Timespan.Ticks プロパティを使用してデータベースに出力できます。.NET の時間の最小単位はティックで、100 ナノ秒に相当します。
varcharとして保存します。を使用してSQLに保存しますTimeSpan.ToString()
。SQLから次のように読み取ります。
TimeSpanObj = TimeSpan.Parse(fieldValue)
SQL CE には時刻型やユーザー定義型がないため、datetime または分を表す int を選択できます。保存する必要がある最大時間が 23:59 = 23 * 60 + 59 = 1439 = 0 分から始まる 1 日の分数である場合、smallint はその範囲に対応する最小の整数型です。
時間と分を別の列に tinyint として格納する誘惑に抵抗してください。これは 1 つの smallint と同じスペースを使用しますが、時間の計算ごとに時間を 60 倍して分を加算する必要があり、すべての計算でorder by
1 つではなく 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
ます。