35

ユーザーがサイトで費やす時間を計算する必要があります。ログアウト時間とログイン時間の違いで、「Xさんはオンラインで4時間43分過ごしました」のようになります。したがって、4時間43分を保存するために、次のように宣言しました: durationtime NOT NULL

これは有効ですか、それともこれを保存するためのより良い方法ですか?+他のユースケースでこれを使用する必要がある他の計算があるため、DBに保存する必要があります。

4

3 に答える 3

50

秒の整数として保存するのが最善の方法です。

  • クリーンでシンプルにUPDATEなります-すなわちduration = duration + $increment
  • Tristramが指摘したように、フィールドの使用には制限があります。たとえば、「値の範囲は〜」です。TIMETIME'-838:59:59''838:59:59'
  • 日/時/分/秒の表示フォーマットはハードコーディングされません。
  • 整数の「秒数」フィールドを操作すると、他の計算の実行がほぼ確実に明確になります。
于 2010-12-21T20:21:15.853 に答える
0

あなたは24時間に制限されるので、私は時間を使いません。最も簡単なのは、整数を分単位(または必要な解像度によっては秒単位)で格納することです。

于 2010-12-21T10:57:29.250 に答える
-1

両方の値をUNIX-epoch-deltaとして保存することを検討してください。

私は通常、signed(64b)bigint(2番目の解決用)、(signed)(64b)double(小数秒が必要な場合)、またはsigned(32b)int(分単位または時間単位に縮小した場合)を使用することを好みます。 。

列の名前で単位を明示的にします。たとえば、「_ epoch_minutely」のような接尾辞を付けます。たとえば、「started_epoch_minutely」、「finished_epoch_minutely」のようにします。

于 2019-06-21T11:52:45.490 に答える