MySQL에서 최근 60분 이내의 레코드 조회하기
MySQL에서 특정 시간 범위(예: 최근 60분)에 해당하는 레코드를 조회하려면 INTERVAL 키워드를 사용하면 됩니다. 기본 문법은 다음과 같습니다.
SELECT * FROM yourTableName
WHERE yourColumnName > now() - interval 60 minute;
이제 실제 예제를 통해 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
ArrivalTime datetime
);
Query OK, 0 rows affected (0.61 sec)
2. 현재 날짜 및 시간 확인
now() 함수를 사용해 현재 시각을 확인합니다.
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2019-09-17 00:04:54 |
+---------------------+
1 row in set (0.00 sec)
3. 샘플 데이터 삽입
INSERT 명령을 사용해 여러 개의 레코드를 삽입합니다.
mysql> insert into DemoTable values('2019-09-16 08:00:00');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('2019-09-17 11:00:00');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('2019-09-12 12:00:00');
Query OK, 1 row affected (0.15 sec)4. 전체 레코드 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+---------------------+
| ArrivalTime |
+---------------------+
| 2019-09-16 08:00:00 |
| 2019-09-17 11:00:00 |
| 2019-09-12 12:00:00 |
+---------------------+
3 rows in set (0.00 sec)
5. 최근 60분 이내 레코드 조회 쿼리
다음은 최근 60분 동안의 레코드만 가져오는 쿼리입니다.
mysql> select *from DemoTable where ArrivalTime > now() - interval 60 minute;
실행 결과는 다음과 같습니다.
+---------------------+
| ArrivalTime |
+---------------------+
| 2019-09-17 11:00:00 |
+---------------------+
1 row in set (0.00 sec)
추가 팁: 다른 표현 방식
DATE_SUB() 함수를 사용해도 동일한 결과를 얻을 수 있습니다.
SELECT * FROM DemoTable
WHERE ArrivalTime > DATE_SUB(NOW(), INTERVAL 60 MINUTE);
또한 데이터 양이 많은 테이블에서 조회 성능을 높이고 싶다면, 해당 datetime 컬럼에 인덱스를 생성하는 것이 좋습니다.
CREATE INDEX idx_arrivaltime ON DemoTable(ArrivalTime);