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


10

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

私はもともとそれを保存するつもりでしたTIMEが、MySQLがこのタイプのミリ秒をサポートしていないことに気付きました。

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

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

回答:


6

個人的には、持続時間には整数型を使用します

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

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


3
intervalこの目的のためだけに標準SQL データ型があります。しかし、すべてのDBMS(およびMySQLは間違いなく)がこれをサポートしているわけではありません。
a_horse_with_no_name 2012年

回答ありがとうございます。現在00:00:00:00の形式なので、標準形式に変換する必要がありますか?そのタイプのフォーマットを許可するように列を設定できますか?
Elliott

@Elliott:表示用に、できます。それ以外の場合は単なる数値です
gbn 2012年

1
おそらくあなたのフォーマットは00:00:00.000です(または、読みやすくするためです)(ミリ秒の場合、コロンではなくドットと3桁の数字に注意してください。)
Jannes

2

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

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


1

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

公式リファレンス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.