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

MySQL에서 최근 60분 이내의 레코드 조회하기

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);