MySQL에서 타임스탬프 값의 일부(예: 연도)만 조회하고 싶다면 YEAR() 함수를 사용하면 됩니다. 기본 문법은 다음과 같습니다.
SELECT YEAR(yourTimestampColumnName) AS anyAliasName FROM yourTableName;
문법을 더 쉽게 이해하기 위해 실제 예제 테이블을 만들어 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 TIMESTAMP 타입의 컬럼을 가진 테이블을 생성합니다.
mysql> CREATE TABLE SelectPartOfTimestampDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ShippingTime TIMESTAMP
-> );
Query OK, 0 rows affected (1.11 sec)
2. 샘플 데이터 삽입
이제 INSERT 문을 사용해 다양한 시점의 배송 시간 데이터를 입력합니다. DATE_ADD() 함수를 활용하면 현재 시간(now())을 기준으로 과거나 미래의 날짜를 손쉽게 만들 수 있습니다.
mysql> INSERT INTO SelectPartOfTimestampDemo(ShippingTime) VALUES(NOW());
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO SelectPartOfTimestampDemo(ShippingTime)
VALUES(DATE_ADD(NOW(), INTERVAL -2 YEAR));
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO SelectPartOfTimestampDemo(ShippingTime)
VALUES(DATE_ADD(NOW(), INTERVAL -3 YEAR));
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO SelectPartOfTimestampDemo(ShippingTime)
VALUES(DATE_ADD(NOW(), INTERVAL -1 YEAR));
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO SelectPartOfTimestampDemo(ShippingTime)
VALUES(DATE_ADD(NOW(), INTERVAL 1 YEAR));
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO SelectPartOfTimestampDemo(ShippingTime)
VALUES(DATE_ADD(NOW(), INTERVAL 2 YEAR));
Query OK, 1 row affected (0.48 sec)
mysql> INSERT INTO SelectPartOfTimestampDemo(ShippingTime)
VALUES(DATE_ADD(NOW(), INTERVAL 3 YEAR));
Query OK, 1 row affected (0.10 sec)
3. 전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> SELECT *FROM SelectPartOfTimestampDemo;
실행 결과는 다음과 같습니다.
+----+---------------------+
| Id | ShippingTime |
+----+---------------------+
| 1 | 2019-02-08 15:03:27 |
| 2 | 2017-02-08 15:03:50 |
| 3 | 2016-02-08 15:04:03 |
| 4 | 2018-02-08 15:04:06 |
| 5 | 2020-02-08 15:04:10 |
| 6 | 2021-02-08 15:04:24 |
| 7 | 2022-02-08 15:04:30 |
+----+---------------------+
7 rows in set (0.00 sec)
4. YEAR() 함수로 연도만 추출하기
이제 YEAR() 함수를 적용해 타임스탬프에서 연도 부분만 선택하는 쿼리를 실행합니다.
mysql> SELECT YEAR(ShippingTime) AS PartOfTimeStamp FROM SelectPartOfTimestampDemo;
실행 결과는 다음과 같습니다.
+-----------------+
| PartOfTimeStamp |
+-----------------+
| 2019 |
| 2017 |
| 2016 |
| 2018 |
| 2020 |
| 2021 |
| 2022 |
+-----------------+
7 rows in set (0.00 sec)
참고: 다른 날짜 부분 추출 함수
YEAR() 외에도 MySQL은 타임스탬프의 다양한 구성 요소를 추출할 수 있는 함수를 제공합니다.
- MONTH() – 월 추출
- DAY() – 일 추출
- HOUR(), MINUTE(), SECOND() – 시, 분, 초 추출
- EXTRACT(YEAR FROM 컬럼명) – 표준 SQL 방식으로 원하는 단위 추출
이처럼 MySQL의 내장 날짜 함수를 활용하면 복잡한 문자열 처리 없이도 타임스탬프에서 필요한 부분만 간단하고 효율적으로 조회할 수 있습니다.