2011-06-24 6 views
1

RESTリクエストを処理するのにかかる時間を記録するつもりですが、どのデータ型がその列に最も適しているかは不明です。時差は1ミリ秒未満であるとは思っていないミリ秒単位で表示されますが、数秒である可能性があります。MySQLの微妙な違いを保存するのに最適なデータ型

Best way to store span on time in a MySQL database?と非常によく似ていますが、より高い精度があります。

タイムスタンプまたは整数の2つのオプションがあります。タイムスタンプはマイクロ秒の精度を持ち、整数には実用的な精度が必要です(Y * 1000で時間差を掛けるだけです)。

時間差は、データ型は、MySQLでのミリ秒スケールの時間差を格納するための最良のだろうどの

$start = microtime(true); 
// do something 
$runtime = microtime(true) - $start; 

によってPHPで計算されますか?

この状況のタイムスタンプと整数の長所と短所は何ですか?

答えて

4

タイムスタンプは、時間を保存するのではなく、時間を保存するために使用されます。 TIMESTAMPはミリ秒を格納せず、どちらもTIMEになりません。整数フィールドを使う。

私も同様の質問:Storing microseconds in MySQL: which workaround?を見つけました。

+0

これはプロファイリング用であるため、リクエストが多すぎる場合に備えて、bigintにアドバイスします。 :-) –

+0

ありがとうございます。私は実際にはミリ秒を格納しないことを完全に忘れていました。 –

+0

microtime(true)がfloat/doubleを返すので、integerフィールドはある精度を失いませんか? – relipse

3

タイムスタンプはカットしません。

TIMESTAMP列は、DATETIME 列と同じ形式で表示されます。言い換えれば、表示幅は、の19文字に固定され、フォーマットは 'YYYY-MM-DD HH:MM:SS'です。

あなたはそれが精度がわずか数秒にあるであろう最高の状態で、2のデルタ(差)を行うには、「時間の瞬間」をキャプチャするために複数の行を行う場合であっても。

私は整数で行います。このようにして、multipliersをミリ秒で実行できます。たとえば、.1 milisecondは整数列に "1"として格納できます。整数は整数列にしか格納できないため、ハード乗数規則を使用することで、逆方向に作業してミリ秒を決定することができます。

+0

ありがとうございます。私は実際にはミリ秒を格納しないことを完全に忘れていました。 –

関連する問題