MySQL : 두 타임 스탬프의 차이를 초 단위로 얻는 방법


97

몇 초 만에 두 타임 스탬프의 차이를 알려주는 MySQL에서 쿼리를 만들 수있는 방법이 있습니까? 아니면 PHP에서해야합니까? 그렇다면 어떻게해야합니까?

답변:


176

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 일)입니다.


11
TIMESTAMPDIFF 를 사용할 수도 있습니다.이 기능은 단일 함수에서 수행 unit합니다 SECOND. 매개 변수를로 설정하면 됩니다 .
Mike

성능 설명에 +1. 더 많은 시간이 걸릴 것이라고 생각했기 때문에 UNIX_TIMESTAMP ()를 사용하지 않았습니다.
elcool

51

"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


날짜 열이 YYYY-MM-DD 이외의 다른 형식 인 str_to_date(date_column, '%m/%d/%Y')경우 형식을 수정해야하는 열의 TIMESTAMPDIFF 함수 내에서 다음을 수행하십시오 .
greaterKing

이 이후 나를 위해 더 나은 대답 TIME_TO_SEC에 maxes 밖으로 3020399이 반환하는 반면 올바른 값.
billynoah

21
UNIX_TIMESTAMP(ts1) - UNIX_TIMESTAMP(ts2)

부호없는 차이를 원하면 ABS()식 주위에 추가하십시오 .

또는을 사용 TIMEDIFF(ts1, ts2)하여 시간 결과를를 사용하여 초로 변환 할 수 있습니다 TIME_TO_SEC().


11

점을 유의 TIMEDIFF()(가) 때 솔루션에만 작동 datetimes됩니다 미만 삼십오일 간격이! 데이터 유형을 TIMEDIFF()반환하고 TIMETIME최대 값은 838 : 59 : 59 시간 (= 34,96 일)입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.