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

MySQL에서 타임스탬프의 특정 부분(연도)을 기준으로 데이터 조회하는 방법

MySQL에서 타임스탬프(timestamp) 값의 일부, 예를 들어 연도나 월 같은 특정 요소를 기준으로 데이터를 조회해야 하는 경우가 자주 있습니다. 이때 YEAR(), MONTH(), DAY() 같은 날짜 함수를 WHERE 절과 함께 사용하면 손쉽게 원하는 데이터만 추출할 수 있습니다.

1. 샘플 테이블 생성

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    AdmissionDate timestamp
);
Query OK, 0 rows affected (0.90 sec)

2. 데이터 삽입

INSERT 명령어를 사용하여 테이블에 여러 개의 입학일(AdmissionDate) 레코드를 추가합니다.

mysql> insert into DemoTable values('2007-01-10');
Query OK, 1 row affected (0.34 sec)
mysql> insert into DemoTable values('2015-07-12');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('2017-11-01');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('2019-08-29');
Query OK, 1 row affected (0.08 sec)

3. 전체 데이터 확인

SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+---------------------+
| AdmissionDate       |
+---------------------+
| 2007-01-10 00:00:00 |
| 2015-07-12 00:00:00 |
| 2017-11-01 00:00:00 |
| 2019-08-29 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)

4. 타임스탬프의 연도를 기준으로 조회하기

타임스탬프의 특정 부분을 기준으로 MySQL 테이블에서 데이터를 선택하려면 YEAR() 함수를 활용하면 됩니다. 아래 예제에서는 입학일의 연도가 2017년인 레코드만 조회합니다.

mysql> select *from DemoTable where year(AdmissionDate)='2017';

실행 결과는 다음과 같습니다.

+---------------------+
| AdmissionDate       |
+---------------------+
| 2017-11-01 00:00:00 |
+---------------------+
1 row in set (0.23 sec)

참고: 월(Month) 기준 조회도 가능

연도뿐만 아니라 MONTH() 함수를 사용하면 특정 월에 해당하는 데이터도 간단히 조회할 수 있습니다.

mysql> select *from DemoTable where month(AdmissionDate)='07';

이처럼 YEAR(), MONTH(), DAY() 등의 함수를 조합하면 타임스탬프 값에서 원하는 부분만 추출하여 유연하게 데이터를 필터링할 수 있습니다.