INTERVAL 키워드로 날짜 연산을 하면 현재 날짜 기준 상대적 범위 조회가 쉽습니다.
현재 날짜 확인
mysql> SELECT CURDATE();
+------------+ | CURDATE() | +------------+ | 2019-11-29 | +------------+ 1 row in set (0.00 sec)
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable1806 (
-> DueDate DATETIME
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1806 VALUES('2019-11-28');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1806 VALUES('2019-11-29');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1806 VALUES('2019-11-30');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1806 VALUES('2019-11-25');
Query OK, 1 row affected (0.00 sec)
데이터 조회
mysql> SELECT * FROM DemoTable1806;
+---------------------+ | DueDate | +---------------------+ | 2019-11-28 00:00:00 | | 2019-11-29 00:00:00 | | 2019-11-30 00:00:00 | | 2019-11-25 00:00:00 | +---------------------+ 4 rows in set (0.00 sec)
현재 시각 기준 1일 전부터 이후 데이터 조회 (>= 1일 전)
mysql> SELECT * FROM DemoTable1806 WHERE DueDate >= NOW() - INTERVAL 1 DAY;
+---------------------+ | DueDate | +---------------------+ | 2019-11-29 00:00:00 | | 2019-11-30 00:00:00 | +---------------------+ 2 rows in set (0.00 sec)
해설: NOW() - INTERVAL 1 DAY = '2019-11-28 00:00:00' (현재 시각 기준). 이 시각 이후(같은 시각 포함) 데이터만 조회. DATE_SUB(NOW(), INTERVAL 1 DAY)와 동일. INTERVAL 1 MONTH, INTERVAL 3 HOUR 등 다양하게 사용 가능.