programing

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

nasanasas 2020. 9. 13. 10:39
반응형

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


몇 초 만에 두 타임 스탬프의 차이를 알려주는 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데이터 유형을 사용하는 경우 값이 이미 에포크 ( 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 일)입니다.

참고 URL : https://stackoverflow.com/questions/3528219/mysql-how-to-get-the-difference-between-two-timestamps-in-seconds

반응형