2012-10-25 2 views
4

whetere 데이터를 알아 내려고 시도하는 것은 5 분 안에 db에 저장되었습니다.유닉스 타임 스탬프를 사용하여 지난 5 분 동안 행을 선택

SELECT COUNT(id), DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i') 
FROM `table` 
WHERE `timestamp` >= CURRENT_TIMESTAMP - INTERVAL 5 MINUTE 

timestamp는 UNIX 소인 (1970 밀리 세컨드)이다.

나는 또한 시도

.. 코드가 루프를 입력하지 않고 내가 널 num_rows 대신 0의 수와 내가 작업을 할

if (!isset($resultHistory->num_rows) || !$resultHistory->num_rows) 

를 사용하는 경우, 작동하지 않습니다

SELECT COUNT(id), DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i') 
    FROM `table` 
    WHERE DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i') >= CURRENT_TIMESTAMP - INTERVAL 5 MINUTE 

답변

3

CURRENT_TIMESTAMP가 SQL의 TIMESTAMP 아닌 UNIX 타임 스탬프로 현재 날짜를 반환합니다, 그래서 당신이 unix_timestamp 기능을 사용하여 변환해야 할 것 :

SELECT COUNT(id), from_unixtime(`timestamp`/1000, '%Y-%m-%d %H:%i') 
FROM `table` 
WHERE `timestamp` >= unix_timestamp(CURRENT_TIMESTAMP - INTERVAL 5 MINUTE) * 1000 

편집 : 당신의 timestamp 열로

유닉스 시간을 포함

, from_unixtime을 사용하여 날짜를 형식화해야합니다.

EDIT2 :

MySQL의 UNIX 시간에

이 시대 (1970 년)이, 당신의 timestamp 열 (밀리 초)을 포함하는 경우, 그래서 당신은뿐만 아니라 1000 분할해야합니다 이후의 초 수입니다 .

+0

안녕하세요 @ beny23 답장을 보내 주셔서 감사합니다. 나는 그것을 시도했다. 나는 뭔가가 필요하다고 생각하고, 나는 테이블을 완전하게 비 웠고, 여전히 $ result-> num_rows = 1을 얻었고,'$ row = $ result-> fetch_object();'객체를 가져 오면 null이되었다. – devmonster

+0

@devmonster : 다른 질문 인 것 같습니다. MySQL 명령 줄 도구에서 직접 쿼리를 시도한 적이 있습니까? – beny23

+0

감사합니다. 제대로 작동했습니다. 해결책은 정확합니다. – devmonster

1

당신은 그렇게 할 수있는 :

SELECT COUNT(id), DATE_FORMAT(`timestamp`, '%Y-%m-%d %H:%i') 
FROM `table` 
WHERE `timestamp` BETWEEN (DATE_SUB(NOW(),INTERVAL 5 MINUTE)) AND NOW() 
관련 문제