2014-09-16 2 views
2

다른 호스트에 ping을 수행 한 시간의 타임 스탬프 (예 : 2014-09-16 09:08:05)가 포함 된 열이있는 MySQL 데이터베이스 테이블에서 작업합니다. 내 질문은 어떻게 특정 호스트에 대한 첫 번째 핑과 마지막 핑 사이의 차이를 몇 분 안에 계산할 수 있습니까? 또한 위에서 언급 한 차이의 시작과 끝 (첫 번째 및 마지막 핑 대신)에 다른 타임 스탬프를 어떻게 지정할 수 있습니까? 다음은 테이블의 예입니다.mysql에서 두 개의 시간 소인 사이의 시간차를 계산하십시오.

|--|---------|-------------------|----| 
|id|http_code|pingtime   |host| 
|--|---------|-------------------|----| 
|10|200  |2014-09-16 09:08:05|2 | 
|--|---------|-------------------|----| 
|11|200  |2014-09-16 10:07:05|1 | 
|--|---------|-------------------|----| 
|12|200  |2014-09-16 10:14:10|2 | 
|--|---------|-------------------|----| 

나는 자신을 충분히 설명해주기를 바랍니다.

+0

여기를보십시오 http://dev.mysql.com/doc/refman/5.6/en/date-calculations.html –

답변

3

당신은 기본 TIMESTAMPDIFF 기능을 사용할 수 있습니다 : 첫 번째 주어진 호스트 ID의 마지막 타임 스탬프의 차이를 찾으려면

SELECT TIMESTAMPDIFF(<INTERVAL>,<timestampFrom>,<timestampTo>); 

을, 여기 당신은 다음과 같습니다

SELECT TIMESTAMPDIFF(MINUTE,MIN(pingtime),MAX(pingtime)) 
FROM yourTable 
WHERE host = 2; 
+0

이것은 가장 좋은 대답입니다 – Edward

+0

에드워드 당신 말이 맞아요, 내가 뭘 찾고 있었는지 :) 고마워요. @creaforge – MariusNV

0

기본 아이디어는 각 호스트의 pingtime에 대한 최대 값과 최소값을 선택하고 두 하위 쿼리의 결과를 조인하는 것입니다.

나는 당신을 위해 time difference (SELECT TIMESTAMPDIFF(MINUTE, ..., ...)) 및 기타 세부 사항을 떠날 : 단순히 각 하위 쿼리에 where 술어를 추가, 핑 번 고려해야 할 첫 번째와 마지막 시간을 표현에 관해서는

SELECT FirstPing.host, FirstPing.first, LastPing.last 
    FROM 
     (SELECT host, MAX(pingtime) AS last FROM Test GROUP BY host) AS LastPing 
    INNER JOIN 
     (SELECT host, MIN(pingtime) AS first FROM Test GROUP BY host) AS FirstPing 
    ON FirstPing.host = LastPing.host 

.

0

그런 다음 UNIX TIMESTAMP로 변환 할 수는과 같이 PHP의 date() 함수를 사용

$difference = date('Y-m-d H:i:s', strtotime($to) - strtotime($from)); 

이 당신에게 차이를 줄 것이다.

0

SQL 구문으로 사용하려는 경우 :

SELECT DATEDIFF('2008-11-30','2008-11-29') AS DiffDate 
0
SELECT 

    TIMESTAMPDIFF(MINUTE,MAX(pingtime), MIN(pingtime)) 

FROM 
    myTable 

WHERE WHERE host = 2; 
관련 문제