MySQL에서 날짜·시간(DATETIME) 값이 내일 날짜와 일치하는지 확인하려면 DATEDIFF() 함수를 사용하면 됩니다. 이 함수는 두 날짜 사이의 일수 차이를 반환하며, 그 결과가 0이면 두 날짜가 같다는 의미입니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 만들어 보겠습니다.
mysql> create table DemoTable
-> (
-> ShippingDate datetime
-> );
Query OK, 0 rows affected (0.90 sec)
2. 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable values('2019-07-01');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable values('2019-07-02');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2019-07-03');
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values('2019-07-04');
Query OK, 1 row affected (0.15 sec)3. 전체 레코드 조회
SELECT 문으로 테이블에 저장된 모든 데이터를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+---------------------+
| ShippingDate |
+---------------------+
| 2019-07-01 00:00:00 |
| 2019-07-02 00:00:00 |
| 2019-07-03 00:00:00 |
| 2019-07-04 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)
4. 내일 날짜와 일치하는 값 확인하기
다음은 DATETIME 값이 내일 날짜와 같은지 확인하는 쿼리입니다. CURDATE()로 오늘 날짜를 구한 뒤 DATE_ADD()로 하루를 더해 내일 날짜를 만들고, DATEDIFF()의 결과가 0인 행만 조회합니다.
mysql> select *from DemoTable
-> WHERE DATEDIFF(ShippingDate, DATE_ADD(CURDATE(), INTERVAL 1 DAY)) = 0;
현재 날짜가 2019-07-01이라면 내일은 2019-07-02가 되고, 해당 날짜가 테이블에 존재하므로 아래와 같은 결과가 출력됩니다.
출력 결과
+---------------------+
| ShippingDate |
+---------------------+
| 2019-07-02 00:00:00 |
+---------------------+
1 row in set (0.08 sec)
참고: 다른 방법
DATEDIFF() 대신 DATE() 함수를 사용해 시간 부분을 제거하고 직접 비교할 수도 있습니다.
mysql> select *from DemoTable
-> WHERE DATE(ShippingDate) = DATE_ADD(CURDATE(), INTERVAL 1 DAY);
두 방식 모두 동일한 결과를 반환하지만, DATEDIFF()는 날짜 차이를 활용한 범위 조건(예: 3일 이내)에도 확장하기 좋아 실무에서 널리 사용됩니다.