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

MySQL 쿼리로 오늘 날짜 기준 가장 가까운 날짜 조회하기

개요

현재 날짜가 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(), 서브쿼리를 조합하면 오늘 날짜를 기준으로 가장 가까운 미래 날짜를 손쉽게 조회할 수 있습니다. 이 방식은 배송 예정일이나 예약일처럼 특정 시점 이후 가장 빠른 일정을 찾아야 할 때 실무에서 유용하게 활용할 수 있습니다.