개요
현재 날짜가 2019-07-25라고 가정해 보겠습니다. 이 글에서는 배송일(ShippingDate) 컬럼을 포함한 테이블을 만들고, 오늘 날짜를 기준으로 가장 가까운 날짜를 조회하는 MySQL 쿼리를 단계별로 알아봅니다.
1. 테이블 생성하기
먼저 다음과 같이 테이블을 생성합니다.
mysql> create table DemoTable667(ShippingDate datetime); Query OK, 0 rows affected (0.46 sec)
2. 샘플 데이터 삽입하기
insert 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable667 values('2019-01-31');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable667 values('2019-07-19');
Query OK, 1 row affected (0.69 sec)
mysql> insert into DemoTable667 values('2019-07-23');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable667 values('2019-08-24');
Query OK, 1 row affected (0.15 sec)3. 전체 레코드 확인하기
select 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from DemoTable667;
실행 결과는 다음과 같습니다.
+---------------------+ | ShippingDate | +---------------------+ | 2019-01-31 00:00:00 | | 2019-07-19 00:00:00 | | 2019-07-23 00:00:00 | | 2019-08-24 00:00:00 | +---------------------+ 4 rows in set (0.00 sec)
4. 오늘 기준 가장 가까운 날짜 조회 쿼리
다음은 오늘 이후 날짜 중 가장 가까운 날짜를 구하는 쿼리입니다. 서브쿼리에서 현재 날짜(date(now()))보다 이후인 날짜들의 최솟값(min)을 구하고, 메인 쿼리에서 그 값과 일치하는 배송일을 조회하는 방식입니다.
mysql> select ShippingDate
from DemoTable667
where date(ShippingDate) = (select min(date(ShippingDate))
from DemoTable667
where date(ShippingDate) > date(now())
);실행 결과는 다음과 같습니다.
+---------------------+ | ShippingDate | +---------------------+ | 2019-07-23 00:00:00 | +---------------------+ 1 row in set (0.00 sec)
정리
date() 함수와 min(), 서브쿼리를 조합하면 오늘 날짜를 기준으로 가장 가까운 미래 날짜를 손쉽게 조회할 수 있습니다. 이 방식은 배송 예정일이나 예약일처럼 특정 시점 이후 가장 빠른 일정을 찾아야 할 때 실무에서 유용하게 활용할 수 있습니다.