MySQL에서 타임스탬프(timestamp) 값에서 날짜 부분만 추출하고 싶다면 DATE() 함수를 사용하면 됩니다. DATE() 함수는 타임스탬프 또는 DATETIME 값에서 시간 정보를 제거하고 날짜(YYYY-MM-DD 형식)만 반환합니다.
기본 문법
SELECT DATE(yourTimestampColumnName) as anyVariableName from yourTableName;
위 문법을 실제로 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table DateFromTimestamp -> ( -> ShippingDateTime timestamp -> ); Query OK, 0 rows affected (0.60 sec)
이제 위에서 생성한 ShippingDateTime 컬럼에 날짜와 시간 데이터를 삽입합니다. 레코드 삽입 쿼리는 다음과 같습니다.
mysql> insert into DateFromTimestamp values('2012-12-26 13:24:35');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DateFromTimestamp values('2013-11-26 14:36:40');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DateFromTimestamp values('2016-07-22 15:20:10');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DateFromTimestamp values('2017-11-04 04:25:30');
Query OK, 1 row affected (0.15 sec)SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DateFromTimestamp;
출력 결과
+---------------------+ | ShippingDateTime | +---------------------+ | 2012-12-26 13:24:35 | | 2013-11-26 14:36:40 | | 2016-07-22 15:20:10 | | 2017-11-04 04:25:30 | +---------------------+ 4 rows in set (0.00 sec)
이제 DATE() 함수를 사용하여 타임스탬프에서 날짜 부분만 표시하는 쿼리입니다.
mysql> select date(ShippingDateTime) as OnlyDatePartFromTimestamp from DateFromTimestamp;
출력 결과
+---------------------------+ | OnlyDatePartFromTimestamp | +---------------------------+ | 2012-12-26 | | 2013-11-26 | | 2016-07-22 | | 2017-11-04 | +---------------------------+ 4 rows in set (0.00 sec)
실행 결과를 보면 시간 정보가 모두 제거되고 날짜(YYYY-MM-DD)만 깔끔하게 추출된 것을 확인할 수 있습니다. 이처럼 DATE() 함수 하나만으로도 타임스탬프 컬럼에서 손쉽게 날짜 데이터를 얻을 수 있으며, 별칭(alias)을 지정하면 결과 컬럼명도 원하는 대로 표시할 수 있습니다.