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

MySQL TIMESTAMPDIFF() 함수로 두 날짜·시간 값의 차이 구하는 방법

MySQL에서 두 datetime 값 사이의 차이를 구하려면 TIMESTAMPDIFF() 함수를 사용하면 됩니다. 이 함수는 첫 번째 인자로 지정한 단위(초, 분, 시간 등)를 기준으로 두 날짜·시간 값의 차이를 정수로 반환합니다. 아래에서 예제 테이블을 만들고 실제 동작 과정을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 datetime 타입의 컬럼 두 개를 가진 테이블을 생성합니다.

mysql> create table DemoTable
    -> (
    -> DueDatetime1 datetime,
    -> DueDatetime2 datetime
    -> );
Query OK, 0 rows affected (0.86 sec)

2. 샘플 데이터 삽입

insert 명령을 사용해 테이블에 레코드를 몇 개 추가합니다.

mysql> insert into DemoTable values('2019-10-26 19:49:00','2019-10-26 17:49:00');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('2019-10-26 08:00:00','2019-10-26 13:00:00');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2019-10-26 06:50:00','2019-10-26 12:50:00');
Query OK, 1 row affected (0.68 sec)

3. 저장된 데이터 확인

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+---------------------+---------------------+
| DueDatetime1 | DueDatetime2 |
+---------------------+---------------------+
| 2019-10-26 19:49:00 | 2019-10-26 17:49:00 |
| 2019-10-26 08:00:00 | 2019-10-26 13:00:00 |
| 2019-10-26 06:50:00 | 2019-10-26 12:50:00 |
+---------------------+---------------------+
3 rows in set (0.00 sec)

4. TIMESTAMPDIFF()로 두 날짜의 차이 계산

이제 timestampdiff() 함수를 활용해 두 날짜·시간 값의 차이를 분(minute) 단위로 구하는 쿼리입니다. abs() 함수를 함께 사용하면 두 값의 순서와 관계없이 항상 양수 결과를 얻을 수 있습니다.

mysql> select abs(timestampdiff(minute,DueDatetime1,DueDatetime2)) from DemoTable;

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

+------------------------------------------------------+
| abs(timestampdiff(minute,DueDatetime1,DueDatetime2)) |
+------------------------------------------------------+
| 120 |
| 300 |
| 360 |
+------------------------------------------------------+
3 rows in set (0.00 sec)

참고: TIMESTAMPDIFF()에서 사용할 수 있는 단위

TIMESTAMPDIFF() 함수의 첫 번째 인자에는 다양한 시간 단위를 지정할 수 있습니다.

  • MICROSECOND — 마이크로초
  • SECOND — 초
  • MINUTE — 분
  • HOUR — 시간
  • DAY — 일
  • WEEK — 주
  • MONTH — 월
  • QUARTER — 분기
  • YEAR — 년

예를 들어 HOUR를 지정하면 시간 단위로, DAY를 지정하면 일 단위로 차이가 계산됩니다. 따라서 마감 시간과 현재 시간의 차이를 계산하거나, 작업 소요 시간을 집계하는 등 필요한 용도에 맞게 단위를 선택해 사용하면 됩니다.