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

MySQL에서 날짜 레코드와 현재 날짜의 차이 구하는 방법

현재 날짜가 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() 함수를 활용하면 입학일, 가입일, 마감일 등 특정 날짜로부터 경과된 기간을 손쉽게 계산할 수 있습니다.