몇 초 만에 두 타임 스탬프의 차이를 알려주는 MySQL에서 쿼리를 만들 수있는 방법이 있습니까? 아니면 PHP에서해야합니까? 그렇다면 어떻게해야합니까?
답변
TIMEDIFF()
및 TIME_TO_SEC()
기능을 다음과 같이 사용할 수 있습니다 .
SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
다른 답변에서 제안한 @Amber로UNIX_TIMESTAMP()
함수를 사용할 수도 있습니다 .
SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') -
UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
TIMESTAMP
데이터 유형을 사용하는 경우 값이 이미 epoch ( Source ) 이후의 초 수를 나타내는 정수로 저장되어 UNIX_TIMESTAMP()
있기 때문에 솔루션이 약간 더 빠를 것이라고 생각합니다 . 문서 인용 :TIMESTAMP
열에서
UNIX_TIMESTAMP()
가 사용 되면TIMESTAMP
함수는 암시 적 “문자열에서 Unix- 타임 스탬프”로 변환하지 않고 내부 타임 스탬프 값을 직접 반환합니다.있다는 사실을 양지
TIMEDIFF()
의 반환 데이터 형식TIME
.TIME
값의 범위는 ‘-838 : 59 : 59’에서 ‘838 : 59 : 59′(대략 34.96 일)입니다.
답변
“TIMESTAMPDIFF”는 어떻습니까?
SELECT TIMESTAMPDIFF(SECOND,'2009-05-18','2009-07-29') from `post_statistics`
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff
답변
UNIX_TIMESTAMP(ts1) - UNIX_TIMESTAMP(ts2)
부호없는 차이를 원하면 ABS()
식 주위에 추가하십시오 .
또는을 사용 TIMEDIFF(ts1, ts2)
하여 시간 결과를를 사용하여 초로 변환 할 수 있습니다 TIME_TO_SEC()
.
답변
점을 유의 TIMEDIFF()
(가) 때 솔루션에만 작동 datetimes
됩니다 미만 삼십오일 간격이!
데이터 유형을 TIMEDIFF()
반환하고 TIMETIME
의 최대 값은 838 : 59 : 59 시간 (= 34,96 일)입니다.
답변
