[SQL] 날짜/시간 데이터 포맷 다루기 - DATE, TIME, DATE_FORMAT

2024. 8. 21. 21:22Language/SQL

 날짜 및 시간 데이터 타입에는 'timestamp', 'datetime', 'date' 등 여러가지 타입이 존재한다. 이번에는 이 날짜/시간 데이터 타입과 형식을 변환하는 것에 대해 정리하고자 한다.

 

1. 기본 문법

SELECT DATE(지정칼럼명) 별명,
       TIME(지정칼럼명) 별명,
       DATE_FORMAT(지정칼럼명 또는 값, 구분기호) 별명
FROM 테이블명

 

 'DATE' 과 'TIME' 의 경우 날짜/시간 형식의 데이터를 각각 DATE 타입과 TIME 타입으로 변환하는 함수이다. 'DATE_FORMAT' 의 경우 컬럼 또는 데이터를 구분기호에 맞추어 특정형식을 갖춘 문자 데이터로 변환하는 기능을 가졌다. 해당 함수에 사용되는 구분기호는 아래와 같다.

구분기호 역할   구분기호 역할
%Y 년도 (4자리)   %W 요일 (영문, 풀네임)
%y 년도 (2자리)   %a 요일 (영문, 약어)
%M 월 (영문, 풀네임)   %T hh:mm:ss
%b 월 (영문, 약어)   %r hh:mm:ss + AM/PM
%m 월 (숫자, 두 자리)   %H 시간 (24시간)
%c 월 (숫자, 원래 값)   %I 시간 (12시간)
%d 일 (두 자리)   %i
%e 일 (원래 값)   %S

[DATE_FORMAT 구분기호]

 

 

2. 사용 예시

 'orders' 테이블의 'updated_at' 컬럼의 날짜/시간 데이터를 DATE, TIME 타입과 날짜, 시간, 연, 월, 일 형식으로 변환한 결과를 출력하는 쿼리를 작성해보자.

SELECT updated_at,
       DATE(updated_at) date, TIME(updated_at) time,
       DATE_FORMAT(updated_at, '%Y') year,
       DATE_FORMAT(updated_at, '%m') month,
       DATE_FORMAT(updated_at, '%d') day
FROM orders
ORDER BY email

데이터 포맷 변환 결과

 

사용하는데 복잡한 것이 없어서 변환 데이터의 타입에 대해 적어보겠다. 'date' 컬럼의 경우 'DATE 타입', 'time' 컬럼은 'TIME 타입', 나머지 'year, month, day' 의 경우 'VARCHAR' 로 문자 타입의 데이터로 타입과 형식이 변환되었다.