[mysql] 두 날짜 간의 시간 차이를 분 단위로 계산

DATE내 빈 의 데이터 유형에 매핑되는 MySQL 데이터베이스에 타임 스탬프 필드가 있습니다 . 이제 현재 타임 스탬프와 데이터베이스에 저장된 타임 스탬프의 차이가> 20 분인 데이터베이스의 모든 레코드를 가져올 수있는 쿼리를 원합니다.

내가 어떻게 해?

내가 원하는 것은 :

SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes

이것에 대한 MySQL 함수가 있습니까, 아니면 SQL에서 이것을 수행하는 방법이 있습니까?



답변

TIMESTAMPDIFF (unit, datetime_expr1, datetime_expr2) 같은 것을
사용할 수 있다고 생각합니다.

select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20


답변

ROUND(time_to_sec((TIMEDIFF(NOW(), "2015-06-10 20:15:00"))) / 60);


답변

오늘과 데이터베이스 날짜에 아래 코드를 사용하고 있습니다.

TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20

문서에 따르면 첫 번째 인수는 다음 중 하나 일 수 있습니다.

MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR


답변

이걸로 해봐:

select * from MyTab T where date_add(T.runTime, INTERVAL 20 MINUTE) < NOW()

참고 : 이것은 MySQL DateTime 형식을 사용하는 경우 작동합니다. Unix Timestamp (정수)를 사용하는 경우 더 쉬울 것입니다.

select * from MyTab T where UNIX_TIMESTAMP() - T.runTime > 20*60

UNIX_TIMESTAMP () 함수는 현재 유닉스 타임 스탬프를 반환합니다.


답변