2011-08-08 2 views
3

ゲームの期間を保存したいと思います。 1:43:00または0:32:12のようなものです。時間をデータベースに保存する場合は、どのデータ型を使用しますか?

Microsoft SQL Server 2008 R2を使用している場合、どのデータ型を選択すればよいですか?

+0

DECLARE @TotalMinutes INT SELECT @TotalMinutes = DATEDIFF(MINUTE, StartTime, EndTime) 
(http://stackoverflow.com/questions/254410/storing-video-duration-time-in-sql-server) –

答えて

2

次のいずれかの

TIME datatype...

またはsmalldatetime

として開始時刻と終了時刻を格納し、私はsmalldatetimeなどの店舗2つのレコードを言うので、あなたはしなくても24時間以上行くのオプションがありますデータ構造を変更します。

+0

[SQL Serverでビデオ継続時間を記憶]の開始と終了を記憶することが可能と重複datetimeは予期しない結果(夏時間、うるう秒)を生成する可能性があります。整数を使用する他の答えを使用する方が良いです。 – Aaroninus

2

私はちょうど秒数を保存します。通常は2つの日付を格納するだけで十分ですが、ゲーム自体またはセッションごとに追跡するものと思われます。

3

は、整数型を使用し、そしてあなたが(この場合、秒)を気精度の最小単位の数量を格納します。あなたのクライアントプログラムコードは、それをフォーマットすることを心配する必要があります。したがって、2つのサンプル値の場合、格納されるデータは61801932になります。値を表示するには

、(例えば)C#のは、ゲームの開始時刻と終了時刻を保存する方がよいし、必要に応じてその場で時間を計算する可能性がありますTimeSpan.FromSeconds().ToString()

+0

良いアプローチ。私は、列記の名前に時間の粒度を含めて、自己文書化することにします。例: 'run_seconds_'です。 –

1

のようなものを使用します。こうすることで、期間を明示的に更新することなく、開始時間と終了時間を変更することができます。

あなたの質問には、私はintデータ型を使用し、分数で期間を格納します。数分で保存することで、簡単に数時間に変換できます。 DATEDIFF関数はすでにINTを返しているので、追加の操作は必要ありません。

関連する問題