2011-02-17 1 views
0

createdAt이라는 datetime 필드가있는 기록 테이블이 있습니다. 나는 기록의 나이를 결정하기 위해 노력하고 있지만, 나이 열은 다시 Null 온다 : 내가 대신 TIMEDIFF()DATEDIFF()을 시도MySQL을 사용할 때 기록의 나이를 몇 분 만에 어떻게 찾을 수 있습니까?

SELECT id, (MINUTE(TIMEDIFF(NOW(),IFNULL(history.createdAt,0)))) AS age 
FROM history 
WHERE history.type = @type 

이 쿼리가 아닌 이유는

어떤 생각이 다시 0를 얻을 수 예상대로 행동 하는가?

는 UPDATE :

데이터베이스를 introspecting 후, 나는 createdAt 열이 date 아닌 datetime 열을 것을 발견했다. 코드는 datetime 열을 사용하는 경우 예상대로 작동합니다.

답변

1

하지 지금 테스트 할 수 있지만 API는 말한다 :

가 범위에서 0

mysql> SELECT MINUTE('2008-02-03 10:05:03'); 
     -> 5 

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_minute

59 시간 분을 반환 - 네가하고 싶은게 아니야. TIMEDIFF의 결과에 TIME_TO_SEC()을 시도하고 분을 얻기 위해 60으로 나눕니다.

+0

TIMEDIFF() 함수라고 생각합니다. createdAt는 datetime 필드이므로 DATEDIFF()로 전환했습니다. 이제 값은 0으로 돌아옵니다. 여전히 작동하지는 않지만 한 걸음 더 가깝습니다. – Mohamad

+1

@ 모함 : DATEDIFF = 값의 날짜 부분 만 계산에 사용됩니다. TIMEDIFF는 원하는 것이지만 동일한 유형의 두 값이 필요합니다. 또한 긍정적 인 결과를 얻으려면 NOW()를 첫 번째 매개 변수로 사용해야합니다. – Arve

+0

내 테이블 열이 datetime이 아닌 date로 설정되었습니다./- 도움을 주셔서 감사 드리며 시간을 낭비하게되어 죄송합니다. 하지만 뭔가 배웠어! – Mohamad

관련 문제