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

MySQL에서 1일보다 오래된 타임스탬프의 행 조회하는 방법

MySQL에서 특정 날짜가 현재 시점으로부터 1일보다 오래된 데이터를 조회하려면 from_unixtime() 함수와 now() 함수를 함께 사용하면 됩니다.

from_unixtime()은 유닉스 타임스탬프(정수형 숫자)를 사람이 읽을 수 있는 DATETIME 형식으로 변환해 주며, now() - interval 1 day 표현식으로 현재 시간에서 하루 전 시점을 구할 수 있습니다.

예제 테이블 생성

먼저 유닉스 타임스탬프를 저장할 테이블을 생성합니다.

mysql> create table demo75
-> (
-> due_date int(11)
-> );
Query OK, 0 rows affected, 1 warning (2.87 sec)

데이터 삽입

insert 명령어와 unix_timestamp() 함수를 사용하여 여러 날짜 데이터를 타임스탬프 값으로 변환한 뒤 삽입합니다.

mysql> insert into demo75 values(unix_timestamp("2020-01-10"));
Query OK, 1 row affected (0.46 sec)

mysql> insert into demo75 values(unix_timestamp("2020-11-19"));
Query OK, 1 row affected (0.59 sec)

mysql> insert into demo75 values(unix_timestamp("2020-12-18"));
Query OK, 1 row affected (0.44 sec)

mysql> insert into demo75 values(unix_timestamp("2020-11-10"));
Query OK, 1 row affected (0.70 sec)

저장된 데이터 확인

select 문으로 테이블에 저장된 레코드를 확인합니다.

mysql> select *from demo75;

위 쿼리는 다음과 같은 결과를 출력합니다.

출력 결과

+------------+
| due_date |
+------------+
| 1578594600 |
| 1605724200 |
| 1608229800 |
| 1604946600 |
+------------+
4 rows in set (0.00 sec)

1일보다 오래된 타임스탬프 행 조회하기

다음은 MySQL에서 1일보다 오래된 타임스탬프를 가진 행을 가져오는 쿼리입니다.

mysql> select * from demo75
-> where from_unixtime(due_date) < now() - interval 1 day;

위 쿼리는 다음과 같은 결과를 출력합니다.

출력 결과

+------------+
| due_date |
+------------+
| 1578594600 |
| 1604946600 |
+------------+
2 rows in set (0.00 sec)

쿼리 설명

위 쿼리의 동작 원리를 살펴보면 다음과 같습니다.

  • from_unixtime(due_date): 정수형 타임스탬프 값을 DATETIME 형식으로 변환합니다.
  • now() - interval 1 day: 현재 시각에서 정확히 1일을 뺀 시점을 계산합니다.
  • 변환된 날짜가 그 시점보다 이전인(<) 행만 필터링되어 반환됩니다.

결과적으로 2020-01-10과 2020-11-10에 해당하는 두 개의 행만 조회되었으며, 나머지 두 행은 조건에 해당하지 않아 제외되었습니다. 이 방법을 활용하면 만료일 관리, 오래된 로그 정리 등 다양한 상황에서 유용하게 사용할 수 있습니다.