2011-07-14 5 views
1

私のデータは、この日付差の合計を取得する方法は?表中の

ds_start_time -> 09:00:00 , ds_end_time-> 09:30:00 
ds_start_time -> 09:00:00 , ds_end_time-> 10:30:00 
ds_start_time -> 10:00:00 , ds_end_time-> 10:30:00 
ds_start_time -> 09:30:00 , ds_end_time-> 10:30:00 

ように私は日付の差をつけたいと私は、クエリ

SELECT SUM(TIMEDIFF(ds_end_time,ds_start_time)) 
FROM www 
WHERE abc='123'........ 

でこれを入れているため、その違い を合計が、最後に私は2058800.000000を取得しています。これから、どのようにして総時間と分を得ることができますか。 またはその他の方法.Plzが提案します。

+0

どのRDBMSを使用しますか?それはMySQLですか? – Jacob

+0

@ cularis、私はこの答えのようにmysql .. – user827726

+0

USe TIME_TO_SECとSEC_TO_TIMEを使用しています:http://stackoverflow.com/questions/4102480/mysql-how-to-sum-a-timediff-on-a-group – Jacob

答えて

1

あなたはどのように知っていればそれは、MySQLでこれを行うのは簡単です:abc = '123'を持っている多くの行がある場合、あなたはおそらく、あなたが試してみたいmigthその原因には、ダブルカウントを取得すること

SELECT SEC_TO_TIME(SUM 
    (TIME_TO_SEC(ds_end_time) - TIME_TO_SEC(ds_start_time)) 
       ) AS timediff  
FROM www 
WHERE abc = '123' 

注:

SELECT SEC_TO_TIME(
    (MAX(TIME_TO_SEC(ds_end_time)) - MIN(TIME_TO_SEC(ds_start_time))) 
       ) AS timediff  
FROM www 
WHERE abc = '123' 
+0

@ user827726これを試してくださいJohanはこれが私が見た最高のものだと言った – jeni

0

これは、SQLの代わりにPHPを使う方がはるかに簡単です。実際のタイムアウトを外してループを繰り返すことを検討してください。

$total = 0; 
foreach ($results as $val) { 
    $total += strtotime($val['ds_end_time']) - strtotime($val['ds_start_time']); 
} 

次に、$ totalを使用して、必要な処理を行うための合計ミリ秒数を指定します。

関連する問題