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

MySQL에서 시작일과 종료일 사이의 일수 계산하기 – DATEDIFF() 함수 완벽 가이드

MySQL DATEDIFF() 함수로 날짜 범위의 일수 구하기

MySQL에서 두 날짜 사이의 일수를 계산하려면 DATEDIFF() 함수를 사용하면 됩니다. 이 함수는 두 날짜 간의 차이를 일 단위로 반환하며, 결과가 음수가 나올 수 있으므로 ABS() 함수와 함께 사용하면 항상 양수 값을 얻을 수 있습니다.

1. 테이블 생성하기

먼저 시작일(StartDate)과 종료일(EndDate)을 저장할 테이블을 생성합니다.

mysql> create table DemoTable730 (
StartDate date,
EndDate date
);
Query OK, 0 rows affected (0.45 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 테스트용 레코드를 몇 개 추가합니다.

mysql> insert into DemoTable730 values('2019-01-21','2019-07-21');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable730 values('2018-10-11','2018-12-31');
Query OK, 1 row affected (0.46 sec)
mysql> insert into DemoTable730 values('2016-01-01','2016-12-31');
Query OK, 1 row affected (0.14 sec)

3. 데이터 조회하기

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

mysql> select *from DemoTable730;

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

+------------+------------+
| StartDate | EndDate |
+------------+------------+
| 2019-01-21 | 2019-07-21 |
| 2018-10-11 | 2018-12-31 |
| 2016-01-01 | 2016-12-31 |
+------------+------------+
3 rows in set (0.00 sec)

4. 날짜 범위의 일수 계산 쿼리

다음은 시작일과 종료일 사이의 일수를 계산하는 쿼리입니다. DATEDIFF() 함수에 ABS()를 적용하여 두 날짜의 순서와 관계없이 항상 양수인 일수를 반환하도록 처리했습니다.

mysql> select ABS(DATEDIFF(StartDate,EndDate)) AS Days from DemoTable730;

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

+------+
| Days |
+------+
| 181 |
| 81 |
| 365 |
+------+
3 rows in set (0.00 sec)

DATEDIFF() 함수 사용 시 참고 사항

  • DATEDIFF(date1, date2)는 date1에서 date2를 뺀 일수를 반환합니다. 즉, 첫 번째 인자가 나중 날짜이면 양수, 반대이면 음수가 됩니다.
  • 날짜 순서가 보장되지 않는 경우 위 예제처럼 ABS() 함수를 함께 사용하는 것이 안전합니다.
  • DATEDIFF()는 시간 부분은 무시하고 날짜만 비교하므로, 시·분·초까지 포함한 차이가 필요하다면 TIMESTAMPDIFF() 함수를 사용하는 것이 좋습니다.