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

MySQL로 지난 1시간 동안 추가된 행 조회하기 – date_sub()와 now() 활용법

MySQL에서 지난 1시간 내에 추가된 행 가져오기

MySQL에서는 date_sub() 함수와 now() 함수를 함께 사용하면 현재 시간을 기준으로 지난 한 시간 동안 추가된 행을 간단하게 조회할 수 있습니다. 로그 기록 분석, 실시간 모니터링 등 최근 데이터만 다뤄야 할 때 매우 유용한 방법입니다.

기본 문법

기본적인 쿼리 문법은 다음과 같습니다.

select * from yourTableName
where yourDateTimeColumnName >= date_sub(now(), interval 1 hour);

date_sub(now(), interval 1 hour)는 현재 시간에서 정확히 1시간 전 시점을 계산하며, datetime 컬럼 값이 그 이후인 행만 결과로 반환됩니다. 개념을 쉽게 이해하기 위해 실제 테이블을 만들어 예제를 살펴보겠습니다.

1. 테이블 생성

먼저 아래 쿼리로 테이블을 생성합니다.

mysql> create table LastHourRecords
-> (
-> Id int,
-> Name varchar(100),
-> Login datetime
-> );
Query OK, 0 rows affected (0.67 sec)

2. 데이터 삽입

insert 명령으로 datetime 형식의 레코드를 입력합니다.

mysql> insert into LastHourRecords values(1,'John','2018-12-19 10:00:00');
Query OK, 1 row affected (0.17 sec)

mysql> insert into LastHourRecords values(2,'Carol','2018-12-19 10:10:00');
Query OK, 1 row affected (0.15 sec)

mysql> insert into LastHourRecords values(3,'Sam','2018-12-19 10:05:00');
Query OK, 1 row affected (0.13 sec)

mysql> insert into LastHourRecords values(4,'Mike','2018-12-18 12:10:00');
Query OK, 1 row affected (0.10 sec)

3. 전체 레코드 확인

select 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.

mysql> select * from LastHourRecords;

출력 결과

+------+-------+---------------------+
| Id   | Name  | Login               |
+------+-------+---------------------+
| 1    | John  | 2018-12-19 10:00:00 |
| 2    | Carol | 2018-12-19 10:10:00 |
| 3    | Sam   | 2018-12-19 10:05:00 |
| 4    | Mike  | 2018-12-18 12:10:00 |
+------+-------+---------------------+
4 rows in set (0.00 sec)

지난 1시간 내에 추가된 행 조회하기

이제 date_sub()와 now()를 활용해 최근 1시간 이내에 추가된 행만 가져오는 쿼리를 실행해 보겠습니다.

mysql> select * from LastHourRecords
-> where Login >= date_sub(now(), interval 1 hour);

출력 결과

+------+-------+---------------------+
| Id   | Name  | Login               |
+------+-------+---------------------+
| 1    | John  | 2018-12-19 10:00:00 |
| 2    | Carol | 2018-12-19 10:10:00 |
| 3    | Sam   | 2018-12-19 10:05:00 |
+------+-------+---------------------+
3 rows in set (0.00 sec)

실행 결과를 보면 어제 날짜인 Mike의 레코드는 제외되고, 최근 1시간 이내에 로그인한 John, Carol, Sam의 레코드만 조회된 것을 확인할 수 있습니다. 이처럼 date_sub(now(), interval N hour) 구문의 숫자를 조정하면 원하는 시간 범위(예: 24시간, 7일 등)의 데이터도 손쉽게 필터링할 수 있습니다.