Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 두 타임스탬프의 차이를 초 단위로 구하는 방법

MySQL에서 두 타임스탬프(timestamp) 사이의 차이를 초 단위로 계산하려면 내장 함수인 TIMEDIFF()TIME_TO_SEC()를 함께 사용하면 됩니다. TIMEDIFF()는 두 시간 값의 차이를 계산하고, TIME_TO_SEC()는 그 결과를 초 단위 숫자로 변환해 줍니다.

기본 문법

두 타임스탬프의 차이를 초 단위로 구하는 기본 쿼리 문법은 다음과 같습니다.

SELECT time_to_sec(timediff(컬럼명1, 컬럼명2)) AS 별칭 FROM 테이블명;

예제 테이블 생성하기

개념을 이해하기 위해 먼저 예제로 사용할 테이블을 만들어 보겠습니다. 아래 쿼리로 TimeToSecond라는 이름의 테이블을 생성합니다.

mysql> CREATE TABLE TimeToSecond
   -> (
   -> MyTime timestamp,
   -> YourTime timestamp
   -> );
Query OK, 0 rows affected (0.48 sec)

데이터 삽입하기

테이블 생성이 완료되면 날짜와 시간 값을 몇 개 삽입합니다.

mysql> INSERT INTO TimeToSecond VALUES('2016-05-10 10:02:00','2016-05-10 10:00:00');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO TimeToSecond VALUES('2016-05-10 10:06:00','2016-05-10 10:03:00');
Query OK, 1 row affected (0.24 sec)

mysql> INSERT INTO TimeToSecond VALUES('2018-05-10 11:00:00','2018-05-10 10:00:00');
Query OK, 1 row affected (0.08 sec)

저장된 데이터 확인하기

INSERT가 정상적으로 완료되었다면 SELECT 문을 사용해 테이블에 저장된 전체 레코드를 확인할 수 있습니다.

mysql> SELECT * FROM TimeToSecond;

실행 결과는 다음과 같습니다.

+---------------------+---------------------+
| MyTime              | YourTime            |
+---------------------+---------------------+
| 2016-05-10 10:02:00 | 2016-05-10 10:00:00 |
| 2016-05-10 10:06:00 | 2016-05-10 10:03:00 |
| 2018-05-10 11:00:00 | 2018-05-10 10:00:00 |
+---------------------+---------------------+
3 rows in set (0.00 sec)

두 타임스탬프의 차이를 초 단위로 조회하기

이제 앞서 살펴본 문법을 적용하여 두 타임스탬프의 차이를 초 단위로 구해 보겠습니다.

mysql> SELECT time_to_sec(timediff(MyTime, YourTime)) AS DifferenceInSeconds FROM TimeToSecond;

실행 결과는 다음과 같습니다.

+---------------------+
| DifferenceInSeconds |
+---------------------+
|                 120 |
|                 180 |
|                3600 |
+---------------------+
3 rows in set (0.00 sec)

결과 해석

출력 결과를 보면 각 행의 차이가 초 단위로 정확히 계산된 것을 확인할 수 있습니다.

  • 첫 번째 행: 10:02:00과 10:00:00의 차이 → 120초(2분)
  • 두 번째 행: 10:06:00과 10:03:00의 차이 → 180초(3분)
  • 세 번째 행: 11:00:00과 10:00:00의 차이 → 3600초(1시간)

참고로, 인자의 순서를 바꾸면 결과값의 부호가 반대로 나오므로, 항상 더 늦은 시간을 첫 번째 인자로 넣는 것이 좋습니다. 또한 두 시간의 차이가 24시간을 초과하는 경우에도 TIMEDIFF()는 올바른 값을 반환하지만, 음수나 큰 값 처리가 필요하다면 UNIX_TIMESTAMP() 함수를 활용해 두 값의 차를 직접 계산하는 방법도 고려할 수 있습니다.