[SQL] 날짜/시간 데이터 포맷 다루기 - DATE, TIME, DATE_FORMAT
2024. 8. 21. 21:22ㆍLanguage/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' 로 문자 타입의 데이터로 타입과 형식이 변환되었다.
'Language > SQL' 카테고리의 다른 글
[SQL] 그룹별 데이터 합치기 - GROUP_CONCAT (0) | 2024.08.30 |
---|---|
[SQL] 실수 데이터 다루기 - ROUND, FLOOR, CEILING, TRUNCATE (0) | 2024.08.25 |
[SQL] WINDOWS FUNCTION - RANK (0) | 2024.08.21 |
[SQL] 데이터 병합 - COALESCE (0) | 2024.08.20 |
[SQL] 테이블 합치기 - JOIN (0) | 2024.08.19 |