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
열을 사용하는 경우 예상대로 작동합니다.
TIMEDIFF() 함수라고 생각합니다. createdAt는 datetime 필드이므로 DATEDIFF()로 전환했습니다. 이제 값은 0으로 돌아옵니다. 여전히 작동하지는 않지만 한 걸음 더 가깝습니다. – Mohamad
@ 모함 : DATEDIFF = 값의 날짜 부분 만 계산에 사용됩니다. TIMEDIFF는 원하는 것이지만 동일한 유형의 두 값이 필요합니다. 또한 긍정적 인 결과를 얻으려면 NOW()를 첫 번째 매개 변수로 사용해야합니다. – Arve
내 테이블 열이 datetime이 아닌 date로 설정되었습니다./- 도움을 주셔서 감사 드리며 시간을 낭비하게되어 죄송합니다. 하지만 뭔가 배웠어! – Mohamad