MySQL에서 타임스탬프 비교하기
MySQL에서 타임스탬프(timestamp) 값을 비교하려면 DATE() 함수를 사용하는 것이 효과적입니다. TIMESTAMP 컬럼에는 날짜뿐만 아니라 시간 정보까지 함께 저장되기 때문에, 순수하게 날짜 기준으로 비교하고 싶다면 DATE() 함수로 시간 부분을 제거한 뒤 비교하는 것이 좋습니다.
이번 글에서는 실제 예제를 통해 테이블 생성부터 데이터 삽입, 그리고 타임스탬프 비교 쿼리까지 단계별로 살펴보겠습니다.
1단계: 테이블 생성하기
먼저 타임스탬프 컬럼을 포함한 테이블을 생성합니다.
mysql> create table comparingTimestampDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> AdmissionDate timestamp
-> );
Query OK, 0 rows affected (0.54 sec)
2단계: 레코드 삽입하기
INSERT 명령어를 사용하여 테이블에 여러 개의 입학일(AdmissionDate) 데이터를 추가합니다.
mysql> insert into comparingTimestampDemo(AdmissionDate) values('2019-03-31');
Query OK, 1 row affected (0.13 sec)
mysql> insert into comparingTimestampDemo(AdmissionDate) values('2019-04-10');
Query OK, 1 row affected (0.12 sec)
mysql> insert into comparingTimestampDemo(AdmissionDate) values('2019-04-15');
Query OK, 1 row affected (0.17 sec)
mysql> insert into comparingTimestampDemo(AdmissionDate) values('2019-03-29');
Query OK, 1 row affected (0.15 sec)
mysql> insert into comparingTimestampDemo(AdmissionDate) values('2019-04-07');
Query OK, 1 row affected (0.18 sec)3단계: 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from comparingTimestampDemo;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+---------------------+
| Id | AdmissionDate |
+----+---------------------+
| 1 | 2019-03-31 00:00:00 |
| 2 | 2019-04-10 00:00:00 |
| 3 | 2019-04-15 00:00:00 |
| 4 | 2019-03-29 00:00:00 |
| 5 | 2019-04-07 00:00:00 |
+----+---------------------+
5 rows in set (0.00 sec)
4단계: 타임스탬프 비교 쿼리 실행하기
이제 DATE() 함수와 CURDATE() 함수를 조합하여 특정 날짜보다 이전인 타임스탬프를 조회해 보겠습니다. 아래 쿼리는 현재 날짜에서 3일을 뺀 날짜보다 이전에 해당하는 레코드를 찾습니다.
mysql> SELECT DATE(`AdmissionDate`) FROM comparingTimestampDemo WHERE
DATE(`AdmissionDate`) < CURDATE() - INTERVAL 3 DAY;
실행 결과는 다음과 같습니다.
+-----------------------+
| DATE(`AdmissionDate`) |
+-----------------------+
| 2019-03-31 |
| 2019-03-29 |
+-----------------------+
2 rows in set (0.00 sec)
쿼리 핵심 정리
위 예제에서 사용된 주요 요소는 다음과 같습니다.
DATE(): TIMESTAMP 값에서 날짜 부분만 추출하여 시간 정보를 무시한 상태로 비교할 수 있게 해줍니다.
CURDATE(): 현재 날짜를 반환합니다.
INTERVAL n DAY: 현재 날짜에서 지정한 일수만큼 더하거나 빼서 원하는 기준일을 만들어 줍니다.
이처럼 DATE() 함수와 INTERVAL 연산을 함께 사용하면 MySQL에서 타임스탬프를 손쉽게 비교할 수 있습니다. 특정 기간 이전 또는 이후의 데이터를 조회하는 조건문 작성에 유용하게 활용해 보시기 바랍니다.