MySQL에서 타임스탬프(timestamp) 값에 포함된 날짜 부분만 추출하고 싶다면 DATE() 함수를 사용하면 됩니다. 이 함수는 'YYYY-MM-DD HH:MM:SS' 형식의 날짜·시간 값에서 시간 정보를 제거하고 순수한 날짜(YYYY-MM-DD)만 반환해 줍니다.
1. 예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable697(
Id varchar(100),
Title varchar(100),
BatchTime timestamp
);
Query OK, 0 rows affected (0.78 sec)
2. 샘플 데이터 삽입하기
INSERT 문을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable697 values('10','Java','2019-01-21 10:34:56');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable697 values('11','Spring','2019-03-11 11:14:16');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable697 values('12','Hibernate','2019-07-21 12:04:00');
Query OK, 1 row affected (0.18 sec)3. 전체 레코드 조회하기
SELECT 문으로 테이블의 모든 데이터를 확인해 보겠습니다.
mysql> select *from DemoTable697;
실행 결과는 다음과 같습니다.
+------+-----------+---------------------+
| Id | Title | BatchTime |
+------+-----------+---------------------+
| 10 | Java | 2019-01-21 10:34:56 |
| 11 | Spring | 2019-03-11 11:14:16 |
| 12 | Hibernate | 2019-07-21 12:04:00 |
+------+-----------+---------------------+
3 rows in set (0.00 sec)
4. DATE() 함수로 날짜만 추출하기
이제 핵심인 DATE() 함수를 사용하여 타임스탬프 컬럼에서 날짜만 선택하는 쿼리를 작성해 보겠습니다. AS 절을 활용하면 결과 컬럼에 별칭을 지정할 수 있어 가독성이 좋아집니다.
mysql> select Title,DATE(BatchTime) AS OnlyDate from DemoTable697 where Id='10';
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------+------------+
| Title | OnlyDate |
+-------+------------+
| Java | 2019-01-21 |
+-------+------------+
1 row in set (0.00 sec)
정리
출력 결과를 보면 원래 '2019-01-21 10:34:56'이었던 BatchTime 값에서 시간 정보가 제거되고 '2019-01-21'이라는 날짜만 깔끔하게 추출된 것을 확인할 수 있습니다. 이처럼 MySQL에서는 DATE() 함수 하나만으로 타임스탬프에서 날짜 부분을 손쉽게 분리할 수 있습니다. 참고로 반대로 시간만 추출하고 싶다면 TIME() 함수를 사용하면 됩니다.