MySQL에서 DATETIME을 DATE로 캐스팅하기
MySQL에서 DATETIME 타입의 값을 DATE 타입으로 변환하려면 CAST() 함수를 사용하면 됩니다. 기본 문법은 다음과 같습니다.
SELECT CAST(컬럼명 AS DATE) AS 별칭 FROM 테이블명;
문법을 더 잘 이해하기 위해 실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 DATETIME 타입의 컬럼을 가진 테이블을 생성합니다.
mysql> CREATE TABLE ConvertDatetimeToDate
-> (
-> YourDatetime datetime
-> );
Query OK, 0 rows affected (0.95 sec)
2단계: DATETIME 데이터 삽입
INSERT 명령어와 DATE_ADD() 함수를 활용해 다양한 날짜 데이터를 삽입합니다. 현재 시점을 기준으로 하루 후, 하루 전, 일년 후, 일년 전의 날짜를 저장하는 쿼리입니다.
mysql> INSERT INTO ConvertDatetimeToDate VALUES(DATE_ADD(NOW(), INTERVAL 1 DAY));
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO ConvertDatetimeToDate VALUES(DATE_ADD(NOW(), INTERVAL -1 DAY));
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO ConvertDatetimeToDate VALUES(DATE_ADD(NOW(), INTERVAL 1 YEAR));
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO ConvertDatetimeToDate VALUES(DATE_ADD(NOW(), INTERVAL -1 YEAR));
Query OK, 1 row affected (0.16 sec)
3단계: 저장된 데이터 확인
삽입된 모든 레코드를 조회해 보겠습니다.
mysql> SELECT * FROM ConvertDatetimeToDate;
실행 결과는 다음과 같습니다. 시간 정보까지 함께 저장된 것을 확인할 수 있습니다.
+---------------------+
| YourDatetime |
+---------------------+
| 2018-11-28 16:12:50 |
| 2018-11-26 16:13:00 |
| 2019-11-27 16:13:13 |
| 2017-11-27 16:13:24 |
+---------------------+
4 rows in set (0.00 sec)
4단계: CAST() 함수로 DATE 타입 변환
이제 앞서 소개한 문법을 적용하여 DATETIME을 DATE로 캐스팅합니다.
mysql> SELECT CAST(YourDatetime AS DATE) AS OnlyDateDemo FROM ConvertDatetimeToDate;
실행 결과 시간 정보가 제거되고 날짜만 깔끔하게 출력되는 것을 확인할 수 있습니다.
+--------------+
| OnlyDateDemo |
+--------------+
| 2018-11-28 |
| 2018-11-26 |
| 2019-11-27 |
| 2017-11-27 |
+--------------+
4 rows in set (0.00 sec)
추가 팁: DATE() 함수 활용하기
CAST() 함수 외에도 MySQL에서는 DATE() 함수를 사용해 동일한 결과를 얻을 수 있습니다.
mysql> SELECT DATE(YourDatetime) AS OnlyDateDemo FROM ConvertDatetimeToDate;
두 방법 모두 결과는 같으며, 코드의 가독성이나 팀의 코딩 컨벤션에 따라 선호하는 방식을 선택하면 됩니다. 대량의 데이터를 다룰 때는 두 함수 간 성능 차이가 거의 없으므로 상황에 맞게 활용하시기 바랍니다.