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

MySQL에서 DATETIME을 DATE로 변환하기: CAST()와 DATE() 함수 완벽 비교

MySQL에서 CAST(컬럼명 AS DATE)DATE() 함수 사이에는 기능상의 차이가 전혀 없습니다. 두 방식 모두 DATETIME 값에서 날짜 부분만 추출하는 동일한 역할을 수행합니다.

CAST()와 DATE()의 문법

두 함수의 기본 문법은 다음과 같습니다.

CAST(yourDateTimeColumnName AS DATE)
DATE(yourDateTimeColumnName)

흥미로운 점은 두 함수 모두 내부적으로 Item_date_typecast라는 동일한 내부 처리기를 호출한다는 것입니다. 따라서 성능이나 결과 면에서 어떤 차이도 없으며, 개발자의 선호도나 코드 가독성에 따라 선택하면 됩니다.

실습용 테이블 생성하기

두 함수의 동작을 직접 확인해 보기 위해 테스트 테이블을 생성해 보겠습니다.

mysql> create table CastAsDateDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> ArrivalTime datetime,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.71 sec)

샘플 데이터 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into CastAsDateDemo(ArrivalTime) values('2014-1-13 13-45-46');
Query OK, 1 row affected (0.16 sec)

mysql> insert into CastAsDateDemo(ArrivalTime) values('2016-4-11 10-30-31');
Query OK, 1 row affected (0.48 sec)

mysql> insert into CastAsDateDemo(ArrivalTime) values('2019-1-9 19-17-49');
Query OK, 1 row affected (0.13 sec)

mysql> insert into CastAsDateDemo(ArrivalTime) values(date_add(now(),interval 2 day));
Query OK, 1 row affected (0.15 sec)

저장된 데이터 조회하기

SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select *from CastAsDateDemo;

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

+----+----------------------+
| Id | ArrivalTime          |
+----+----------------------+
| 1  |2014-01-13 13-45-46   |
| 2  |2016-04-11 10-30-31   |
| 3  |2019-01-09 19-17-49   |
| 4  |2019-01-11 19-17-59   |
+----+---------------------+
4 rows in set (0.00 sec)

방법 1: CAST() 함수 사용하기

CAST()를 사용하여 DATETIME 값을 DATE 타입으로 변환하는 쿼리입니다.

mysql> select cast(ArrivalTime as Date) as only_Date from CastAsDateDemo;

실행 결과, 시간 정보가 제거된 순수한 날짜 값만 출력됩니다.

+------------+
| only_Date  |
+------------+
| 2014-01-13 |
| 2016-04-11 |
| 2019-01-09 |
| 2019-01-11 |
+------------+
4 rows in set (0.00 sec)

방법 2: DATE() 함수 사용하기

이번에는 DATE() 함수를 사용해 같은 작업을 수행해 보겠습니다.

mysql> select date(ArrivalTime) as only_Date from CastAsDateDemo;

결과는 CAST()와 완전히 동일합니다.

+------------+
| only_Date  |
+------------+
| 2014-01-13 |
| 2016-04-11 |
| 2019-01-09 |
| 2019-01-11 |
+------------+
4 rows in set (0.00 sec)

정리

MySQL에서 DATETIME 값을 DATE로 변환할 때 CAST(x AS DATE)DATE(x) 중 어떤 것을 사용해도 결과는 같습니다. SQL 표준 문법에 가까운 CAST()를 선호하는 개발자도 있고, 간결한 DATE() 함수를 선호하는 개발자도 있습니다. 프로젝트의 코딩 컨벤션에 맞춰 일관되게 사용하는 것이 가장 좋습니다.