현재 날짜가 2019-09-06이라고 가정하고, 예제를 위해 먼저 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
AdmissionDate date
);
Query OK, 0 rows affected (0.54 sec)INSERT 명령을 사용하여 테이블에 샘플 레코드를 삽입합니다.
mysql> insert into DemoTable values('2019-01-08');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('2018-09-06');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('2016-10-26');
Query OK, 1 row affected (0.17 sec)SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+---------------+ | AdmissionDate | +---------------+ | 2019-01-08 | | 2018-09-06 | | 2016-10-26 | +---------------+ 3 rows in set (0.00 sec)
DATEDIFF() 함수로 날짜 차이 계산하기
테이블에 저장된 날짜 레코드와 현재 날짜 사이의 차이(일수)를 구하는 쿼리는 다음과 같습니다.
mysql> select datediff(now(),AdmissionDate) from DemoTable;
실행 결과는 아래와 같습니다.
+-------------------------------+ | datediff(now(),AdmissionDate) | +-------------------------------+ | 241 | | 365 | | 1045 | +-------------------------------+ 3 rows in set (0.00 sec)
DATEDIFF() 함수 이해하기
MySQL에서 두 날짜 간의 일수 차이를 계산할 때는 DATEDIFF() 함수를 사용합니다. 기본 문법은 다음과 같습니다.
DATEDIFF(날짜1, 날짜2)
이 함수는 날짜1에서 날짜2를 뺀 일수를 반환합니다. 따라서 첫 번째 인자에 현재 날짜를, 두 번째 인자에 비교 대상 날짜 컬럼을 넣으면 해당 날짜로부터 오늘까지 경과한 일수를 얻을 수 있습니다.
- NOW(): 현재 날짜와 시간을 함께 반환합니다.
- CURDATE(): 시간 정보 없이 현재 날짜만 반환합니다. 날짜 간 차이만 필요하다면 NOW() 대신 CURDATE()를 사용해도 동일한 결과를 얻을 수 있습니다.
예제 결과를 보면, 2019-01-08은 현재 날짜(2019-09-06)보다 241일 전, 2018-09-06은 정확히 365일(1년) 전, 그리고 2016-10-26은 1045일 전인 것을 확인할 수 있습니다. 이처럼 DATEDIFF() 함수를 활용하면 입학일, 가입일, 마감일 등 특정 날짜로부터 경과된 기간을 손쉽게 계산할 수 있습니다.