MySQL에서 현재 날짜 이전의 타임스탬프 조회하기
MySQL에서는 NOW() 함수와 비교 연산자를 조합하면 현재 날짜 및 시간보다 이전에 저장된 타임스탬프 데이터만 손쉽게 조회할 수 있습니다. 이번 글에서는 예제 테이블을 만들고, 실제 쿼리 실행 과정을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 타임스탬프 값을 저장할 테이블을 생성합니다.
mysql> create table DemoTable(
ArrivalDate timestamp
);
Query OK, 0 rows affected (1.96 sec)
2. 샘플 데이터 삽입
INSERT 문을 사용해 여러 개의 날짜 데이터를 입력합니다.
mysql> insert into DemoTable values('2019-09-14 17:25:00');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values('2019-09-13 17:25:00');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('2016-09-01 17:20:10');
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable values('2019-09-11 12:00:00');
Query OK, 1 row affected (0.16 sec)3. 전체 데이터 확인
SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+---------------------+
| ArrivalDate |
+---------------------+
| 2019-09-14 17:25:00 |
| 2019-09-13 17:25:00 |
| 2016-09-01 17:20:10 |
| 2019-09-11 12:00:00 |
+---------------------+
4 rows in set (0.04 sec)
4. 현재 날짜 이전의 타임스탬프만 조회
다음은 WHERE 절에서 NOW() 함수와 비교 연산자를 사용하여, 현재 시점보다 이전인 타임스탬프만 출력하는 쿼리입니다.
mysql> select *from DemoTable where ArrivalDate < now();
실행 결과는 다음과 같습니다.
+---------------------+
| ArrivalDate |
+---------------------+
| 2019-09-13 17:25:00 |
| 2016-09-01 17:20:10 |
| 2019-09-11 12:00:00 |
+---------------------+
3 rows in set (0.07 sec)
정리
NOW() 함수는 쿼리가 실행되는 시점의 현재 날짜와 시간을 반환합니다. 따라서 WHERE ArrivalDate < now() 조건을 적용하면 현재 시점 이전의 데이터만 필터링됩니다. 위 예제에서는 가장 최근 날짜인 '2019-09-14 17:25:00' 한 건이 제외되고 나머지 3건이 조회된 것을 확인할 수 있습니다.
참고로 반대로 현재 시점 이후의 데이터를 조회하고 싶다면 비교 연산자를 >로 변경하면 되며, 오늘 날짜 기준으로만 필터링하고 싶다면 CURDATE() 함수를 사용하는 방법도 있습니다.