MySQL에서 현재 날짜와 가입 날짜 사이의 차이를 구하려면 DATEDIFF() 함수를 사용할 수 있습니다. 먼저 CURDATE() 함수로 현재 날짜를 확인한 뒤, 가입 날짜와의 차이를 계산하는 방법을 단계별로 살펴보겠습니다.
1단계: 현재 날짜 확인하기
먼저 CURDATE() 함수를 사용해 현재 날짜를 조회합니다.
mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-10-26 | +------------+ 1 row in set (0.00 sec)
2단계: 테이블 생성하기
예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> JoiningDate varchar(40)
-> );
Query OK, 0 rows affected (0.61 sec)3단계: 데이터 삽입하기
INSERT 명령을 사용해 가입 날짜 데이터를 여러 건 입력합니다.
mysql> insert into DemoTable values('10/10/1998');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('31/12/2010');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('01/01/2017');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('25/10/2019');
Query OK, 1 row affected (0.14 sec)4단계: 저장된 데이터 조회하기
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-------------+ | JoiningDate | +-------------+ | 10/10/1998 | | 31/12/2010 | | 01/01/2017 | | 25/10/2019 | +-------------+ 4 rows in set (0.00 sec)
5단계: 현재 날짜와 가입 날짜의 차이 계산하기
가입 날짜가 '일/월/년' 형식의 문자열로 저장되어 있으므로, STR_TO_DATE() 함수를 사용해 이를 날짜 형식으로 변환한 후 DATEDIFF() 함수에 적용합니다.
mysql> select datediff(curdate(),str_to_date(JoiningDate,'%d/%m/%Y')) from DemoTable;
실행 결과는 다음과 같습니다.
+---------------------------------------------------------+ | datediff(curdate(),str_to_date(JoiningDate,'%d/%m/%Y')) | +---------------------------------------------------------+ | 7686 | | 3221 | | 1028 | | 1 | +---------------------------------------------------------+ 4 rows in set (0.00 sec)
핵심 포인트 정리
DATEDIFF(날짜1, 날짜2)는 두 날짜 사이의 일수 차이를 반환합니다. 첫 번째 인자에서 두 번째 인자를 뺀 값이 결과로 나오므로, 인자 순서에 유의해야 합니다. 또한 날짜가 문자열로 저장된 경우에는 STR_TO_DATE() 함수와 '%d/%m/%Y' 같은 포맷 지정자를 활용해 올바르게 변환한 뒤 비교하는 것이 중요합니다.