2011-08-11 5 views
1

時間の間隔として認識される2つの異なるタイムスタンプを使用するMySQLクエリがあります。私は、差の25-30%を余分に実装する必要があります。たとえば、時間の差が30分の場合は、5分前と5分後にさらに5分を要求する必要があります.2つのタイムスタンプの差を取得するだけでなく、この割合を計算する方法はありますか1つの声明の中で、適切な間隔を得るための時間は?MySQLの2回の差分からの間隔

次のようなものがあります。ここで、xは計算された値です。

..

DATE_FORMAT(timestamp1 - 間隔X分、 '%のM /%D /%のY%のR') 'スタート'、

DATE_FORMAT(timestamp2 +間隔X分、 '%ASエンド '' AS)' M /%D /%Yの%のR、

..

答えて

2

あなたが開始タイムスタンプとデータベース内のエンドタイムスタンプを持っています。それらの時間間隔に基づいて、これらの値に時間の割合を追加したいとします。言い換えると、2つの違いを知らなくても、時間を追加したり減算したりすることはできません。

まず、時間帯を把握する必要があります。私は、ユニットとしての分を使用するつもりですが、あなたのニーズに最適なものは何でも利用:

SELECT 
    @new_span := TIMESTAMPDIFF(MINUTE, timestamp1, timestamp2) * 1.25 new_span, 
    DATE_SUB(timestamp1, INTERVAL (@new_span*60)/2 SECOND) AS new_start, 
    DATE_ADD(timestamp2, INTERVAL (@new_span*60)/2 SECOND) AS new_end, 
    TIMESTAMPDIFF(MINUTE, timestamp1, timestamp2) old_span, 
    timestamp1 AS previous_start, 
    timestamp2 AS previous_end 
FROM table; 

だから、このクエリは2倍の違いプラスnew_spanという名前の変数として25%を保存します。 new_startとフィールドは、元の開始/終了時刻を変更するために変数を使用します(秒に変換され、半分に分割されます)。比較のため、old_spanと元の開始/終了時刻も選択しています。ここで

はサンプル出力です。

new_span new_start   new_end    old_span previous_start  previous_end   
1.25  2011-08-11 15:53:22 2011-08-11 15:55:38 1   2011-08-11 15:54:00 2011-08-11 15:55:00 
1350.00 2011-08-09 00:45:00 2011-08-10 17:15:00 1080  2011-08-09 12:00:00 2011-08-10 06:00:00 
+0

美しいです!私はそこに行っていたが、これは本当に私に多くの時間を節約するのに役立った。ありがとう! – Kevin

関連する問題