データベースへの「時間」の格納に関する簡単な質問です。ユーザーの実行時間を00:00:00:00(時間、分、秒、ミリ秒)の形式でログに記録しています。
最初はTIME
として保存する予定でしたが、MySQLがこのタイプのミリ秒をサポートしていないことに気付きました。
私はユーザーがストップウォッチから実行した実際の時間を保存します。ユーザーが実行して終了した時間ではありません(これは挿入される前に計算されます)。
使用するのに最適なフィールドタイプは何ですか? double
かfloat
のどちらかを考えていましたが、うまくいくかどうかわかりません。
個人的には、整数型をdurationに使用します
例:340,000ミリ秒は、unsigned int列では340000です。
私にとって、datetime、time、dateなどは、特定の時点のことです。その場合、340秒は意味がありません。スタートdate/time
はもちろんdurationを追加できます
測定する期間によって異なります。 2 ^ 32または4294967296ミリ秒よりも長い時間記録しない場合は、通常の符号なし整数で十分です。これは、約50日間のクロック時間に相当します。
UNIXのタイムスタンプまたはより大きな間隔を格納していた場合は、bigintの使用を検討してください。これにより、8バイトのスペース、または1.84467440737096e + 19ミリ秒(約5億年)の時間を記録できるようになります。
MySQL 5.6.4以降を使用している場合、TIME(3)
、DATETIME(3)
およびTIMESTAMP(3)
の列タイプを使用して、最大6つの小数桁を格納できます(3
は、必要な小数桁数で)。小数部は、ドットの後の時間文字列に追加されます。例:2018-09-08 17:51:04.781
。