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

MySQL에서 현재 날짜 기준 1일 이상의 행을 조회하는 방법

MySQL에서 현재 날짜를 기준으로 1일 이상(>= 1 day)에 해당하는 데이터를 조회하려면 INTERVAL 개념을 활용하면 됩니다.

현재 날짜 확인하기

먼저 CURDATE() 함수로 현재 날짜를 확인해 보겠습니다.

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)

INSERT 명령어를 사용하여 테이블에 여러 레코드를 삽입합니다.

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)

저장된 데이터 전체 조회

SELECT 문을 사용하여 테이블의 모든 레코드를 확인합니다.

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일 이상인 행 조회하기

다음은 NOW() 함수와 INTERVAL을 조합하여 현재 시점으로부터 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는 현재 시각에서 하루를 뺀 시점을 의미합니다. WHERE 절에서 이 값보다 크거나 같은 DueDate만 필터링하기 때문에, 어제 이후의 데이터만 결과로 반환됩니다. 만약 날짜 단위로 정확히 비교하고 싶다면 NOW() 대신 CURDATE()를 사용할 수도 있습니다. INTERVAL 표현식은 DAY 외에도 HOUR, MONTH, YEAR 등 다양한 단위를 지원하므로, 상황에 맞게 활용하면 유용합니다.