2013-08-25 5 views
0

나는 지난 7 일 동안 만든 레코드를 반환하도록 내 sql 쿼리를 가져 오려고했습니다.문제 TimeStampDiff() 사용하여 SQL 쿼리

각 항목과 관련된 타임 스탬프 기록 그래서 다음 쿼리이 2011 년부터 기록의 목록을 반환하는 몇 가지 이유를 들어

SELECT * FROM `messages` WHERE TIMESTAMPDIFF(DAY, time, NOW()) <= 7 

를 작성하는 TIMESTAMPDIFF 기능이 사용한 적이있다!

이것은 간단한 구문 오류입니까? 잘못하고 있습니까?

나는 또한 DATEDIFF를 사용하여 시도

()

SELECT * FROM `messages` WHERE DATEDIFF(NOW(), time) <= 7 

그러나 그것은 나에게 같은 잘못된 결과를 얻을 것으로 보인다. DATEDIFF가 UNIX 타임 스탬프로 작동하지 않기 때문에 이것이 의심 스럽습니다.

DATEDIFF() 쿼리를 사용하는 다른 테이블에서 사용하는 다른 쿼리가 있는데 제대로 작동하지만 해당 테이블에는 타임 스탬프와 달리 실제 날짜 열이 있습니다.

죄송합니다. 간단한 답변이지만 죄송합니다. 잠시만 기다려주세요. 쿼리 다음

답변

1

시도 :

SELECT * 
FROM messages 
WHERE time > UNIX_TIMESTAMP(NOW()) - 604800 

약간의 설명 : 칠일 = 1백68시간은 = 10,080 분 = 604 8백초.

UNIX-timestamps는 1970-01-01 00:00:00 이후에 경과 된 초 수이므로 초 단위로 계산해야합니다. MySQL의 대부분의 날짜/시간 함수는 쓸모가 없습니다. 날짜와 시간을 저장하기위한 기본 MySQL 형식으로 만 작동하기 때문입니다.

+0

내가 그 이상한 모든 – robobobobo

+0

에서 아무 것도 반환하지 두려워 ... [SQL-바이올린] (http://sqlfiddle.com/#!2/5294e/1/0) –

+0

내 타임 스탬프 형식 1375469304에있다, 그것은 그것에 영향을 미칠 수 있습니까? – robobobobo