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

MySQL 타임스탬프(TIMESTAMP)에서 특정 연도의 레코드 조회하는 방법

MySQL에서 YEAR() 함수를 사용하면 타임스탬프(Timestamp) 값으로부터 연도를 추출할 수 있습니다. 이 함수를 활용하면 특정 연도에 해당하는 레코드만 손쉽게 필터링하여 조회할 수 있습니다.

기본 문법

SELECT yourColumnName FROM yourTableName WHERE YEAR(yourTimestampColumnName) = 'yourYearValue';

예제 테이블 생성하기

위 문법을 실제로 이해하기 위해 예제 테이블을 먼저 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table getYearOut
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> Name varchar(10),
    -> yourTimestamp timestamp default current_timestamp,
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (1.56 sec)

테이블이 정상적으로 생성되었습니다. 이제 INSERT 명령을 사용하여 몇 개의 레코드를 삽입해 보겠습니다.

mysql> insert into getYearOut(Name,yourTimestamp) values('John',now());
Query OK, 1 row affected (0.26 sec)
mysql> insert into getYearOut(Name,yourTimestamp) values('Carol','2018-09-23 17:34:44');
Query OK, 1 row affected (0.38 sec)
mysql> insert into getYearOut(Name,yourTimestamp) values('Bob','2016-05-12 16:12:34');
Query OK, 1 row affected (0.43 sec)

저장된 전체 레코드 확인하기

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

mysql> select *from getYearOut;

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

+----+-------+---------------------+
| Id | Name  | yourTimestamp       |
+----+-------+---------------------+
|  1 | John  | 2019-02-05 11:46:11 |
|  2 | Carol | 2018-09-23 17:34:44 |
|  3 | Bob   | 2016-05-12 16:12:34 |
+----+-------+---------------------+
3 rows in set (0.00 sec)

특정 연도의 레코드 조회하기

이제 YEAR() 함수를 활용하여 타임스탬프에서 특정 연도를 추출하고, 해당 연도와 일치하는 레코드만 조회하는 쿼리를 작성해 보겠습니다. 여기서는 2019년에 해당하는 레코드를 조회합니다.

mysql> select Id, Name from getYearOut where year(yourTimestamp)='2019';

실행 결과, 2019년에 해당하는 레코드만 출력되는 것을 확인할 수 있습니다.

+----+-------+
| Id | Name  |
+----+-------+
| 1  | John  |
+----+-------+
1 row in set (0.00 sec)

정리

이처럼 MySQL의 YEAR() 함수를 WHERE 절과 함께 사용하면 TIMESTAMP 컬럼에서 원하는 연도의 데이터를 간단하게 추출할 수 있습니다. 월별 조회가 필요한 경우에는 MONTH() 함수를, 일자 기준 조회에는 DAY() 함수를 함께 활용하면 더욱 유연한 날짜 조건 검색이 가능합니다.