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

MySQL에서 정확히 7일 전 날짜/시간(datetime) 레코드 조회하는 방법

MySQL에서 정확히 7일 전 레코드 조회하기

MySQL에서 정확히 7일 전 날짜에 해당하는 datetime 레코드를 조회하려면 INTERVAL 7 DAY 구문과 CURDATE() 함수를 함께 활용하면 됩니다. 이번 글에서는 예제 테이블을 생성하고, 실제 쿼리로 원하는 결과를 얻는 과정을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 datetime 타입의 컬럼을 포함한 테이블을 생성합니다.

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    AdmissionDate datetime
);
Query OK, 0 rows affected (0.83 sec)

참고: 이 예제에서는 현재 날짜가 2019-08-23이라고 가정합니다.

2. 샘플 데이터 삽입

INSERT 명령어를 사용해 서로 다른 날짜의 레코드를 여러 개 추가합니다.

mysql> insert into DemoTable(AdmissionDate) values('2019-01-23');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(AdmissionDate) values('2019-08-15');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(AdmissionDate) values('2019-08-16');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(AdmissionDate) values('2019-08-24');
Query OK, 1 row affected (0.14 sec)

3. 전체 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+----+---------------------+
| Id | AdmissionDate       |
+----+---------------------+
|  1 | 2019-01-23 00:00:00 |
|  2 | 2019-08-15 00:00:00 |
|  3 | 2019-08-16 00:00:00 |
|  4 | 2019-08-24 00:00:00 |
+----+---------------------+
4 rows in set (0.00 sec)

4. 정확히 7일 전 레코드를 가져오는 쿼리

다음은 CURDATE()에서 INTERVAL 7 DAY를 빼서, 정확히 7일 전 날짜와 일치하는 datetime 레코드를 조회하는 쿼리입니다.

mysql> select *from DemoTable where date(AdmissionDate)=CURDATE() - interval 7 day;

실행 결과는 다음과 같습니다.

+----+---------------------+
| Id | AdmissionDate       |
+----+---------------------+
|  3 | 2019-08-16 00:00:00 |
+----+---------------------+
1 row in set (0.04 sec)

핵심 포인트

위 쿼리에서 주목할 부분은 두 가지입니다. 첫째, date() 함수를 사용해 AdmissionDate 컬럼의 시간 정보를 제거하고 날짜만 비교했습니다. 둘째, CURDATE() - interval 7 day 표현식으로 현재 날짜에서 정확히 7일을 뺀 날짜를 계산했습니다. 이 방식을 응용하면 INTERVAL 1 MONTH, INTERVAL 1 YEAR 등 다양한 기간 조건의 데이터 조회도 손쉽게 구현할 수 있습니다.