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

MySQL에서 두 날짜 간의 시간 차이를 시간(Hour) 단위로 구하는 방법

MySQL에서 두 날짜·시간(datetime) 값 사이의 차이를 시간 단위로 구하고 싶다면 TIMESTAMPDIFF() 함수를 사용하면 됩니다. 여기에 ABS() 함수를 함께 사용하면 시작 시간과 종료 시간의 순서와 관계없이 항상 양수인 절대값을 얻을 수 있습니다.

기본 문법

SELECT ABS(TIMESTAMPDIFF(HOUR,yourColumnName1,yourColumnName2)) as
anyVariableName from yourTableName;

문법을 제대로 이해하기 위해 실제 테이블을 만들어 예제를 살펴보겠습니다.

1. 테이블 생성

먼저 시작 시간과 종료 시간을 저장할 테이블을 생성합니다.

mysql> create table DifferenceInHours
   -> (
   -> StartDateTime datetime,
   -> EndDateTime datetime
   -> );
Query OK, 0 rows affected (0.59 sec)

2. 데이터 삽입

INSERT 명령어를 사용해 샘플 레코드를 몇 개 입력합니다.

mysql> insert into DifferenceInHours values('2018-12-20 10:00:00', '2018-12-19 12:00:00');
Query OK, 1 row affected (0.11 sec)

mysql> insert into DifferenceInHours values('2018-12-20 11:00:00', '2018-12-19 11:00:00');
Query OK, 1 row affected (0.16 sec)

mysql> insert into DifferenceInHours values('2018-12-20 10:30:00', '2018-12-19 11:00:00');
Query OK, 1 row affected (0.13 sec)

3. 전체 데이터 조회

SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.

mysql> select *from DifferenceInHours;

출력 결과

+---------------------+---------------------+
| StartDateTime       | EndDateTime         |
+---------------------+---------------------+
| 2018-12-20 10:00:00 | 2018-12-19 12:00:00 |
| 2018-12-20 11:00:00 | 2018-12-19 11:00:00 |
| 2018-12-20 10:30:00 | 2018-12-19 11:00:00 |
+---------------------+---------------------+
3 rows in set (0.00 sec)

시간 차이 계산 쿼리

이제 TIMESTAMPDIFF() 함수에 HOUR 단위를 지정하여 두 datetime 값의 차이를 시간 단위로 계산합니다.

mysql> SELECT ABS(TIMESTAMPDIFF(HOUR,StartDateTime,EndDateTime)) as Hour from
DifferenceInHours;

실행 결과, 각 행별 시간 차이가 다음과 같이 출력됩니다.

+------+
| Hour |
+------+
|   22 |
|   24 |
|   23 |
+------+
3 rows in set (0.00 sec)

이처럼 TIMESTAMPDIFF(HOUR, ...)를 사용하면 분 단위까지 포함된 시각(예: 10:30)이라도 시간 단위로 자동 반올림되어 처리됩니다. 만약 더 정밀한 계산이 필요하다면 MINUTE나 SECOND 단위를 지정한 후 직접 변환하는 방법도 활용할 수 있습니다.