web-dev-qa-db-ja.com

ミリ秒での時間のデータベースへの保存

データベースへの「時間」の格納に関する簡単な質問です。ユーザーの実行時間を00:00:00:00(時間、分、秒、ミリ秒)の形式でログに記録しています。

最初はTIMEとして保存する予定でしたが、MySQLがこのタイプのミリ秒をサポートしていないことに気付きました。

私はユーザーがストップウォッチから実行した実際の時間を保存します。ユーザーが実行して終了した時間ではありません(これは挿入される前に計算されます)。

使用するのに最適なフィールドタイプは何ですか? doublefloatのどちらかを考えていましたが、うまくいくかどうかわかりません。

10
Elliott

個人的には、整数型をdurationに使用します

例:340,000ミリ秒は、unsigned int列では340000です。

私にとって、datetime、time、dateなどは、特定の時点のことです。その場合、340秒は意味がありません。スタートdate/timeはもちろんdurationを追加できます

6
gbn

測定する期間によって異なります。 2 ^ 32または4294967296ミリ秒よりも長い時間記録しない場合は、通常の符号なし整数で十分です。これは、約50日間のクロック時間に相当します。

UNIXのタイムスタンプまたはより大きな間隔を格納していた場合は、bigintの使用を検討してください。これにより、8バイトのスペース、または1.84467440737096e + 19ミリ秒(約5億年)の時間を記録できるようになります。

2
atxdba

MySQL 5.6.4以降を使用している場合、TIME(3)DATETIME(3)およびTIMESTAMP(3)の列タイプを使用して、最大6つの小数桁を格納できます(3は、必要な小数桁数で)。小数部は、ドットの後の時間文字列に追加されます。例:2018-09-08 17:51:04.781

公式参照

1
Finesse