DATE형 데이터 다루기
DATETIME과 같은 타입의 데이터를 조회하는데에 도움이 되는 SQL함수들을 정리한 글입니다.
1. DATE_FORMAT
DATE 타입을 지정한 포맷에 맞는 문자형으로 바꿔주는 함수입니다.
자주 쓰는 FORMAT은 다음과 같습니다.
예문
SELECT * FROM CALENDAR
WHERE DATE_FORMAT(날짜컬럼, '%Y') = '2025';
--- CALENDAR 테이블에서 날짜가 2025년도인 데이터 조회
LIKE 연산자를 이용
여기서 LIKE 연산자를 이용해 조회하려면 날짜 컬럼이 문자열이어야 합니다.
즉, CHAR, VARCHAR과 같은 타입이어야 합니다.
따라서 DATE_FORMAT 함수를 이용해서 날짜 컬럼을 문자열로 바꾼 후, 조회하는 방법을 사용합니다.
예문
SELECT * FROM CALENDAR_TABLE
WHERE DATE_FORMAT(날짜컬럼, '%Y-%m') LIKE '2025-01';
--- 컬럼에서 2025년 1월의 데이터 조회
위 코드의 경우엔
- CALENDAR TABLE에서 날짜컬럼을 4자리 연도와 2자리 월만 추출해 '-'로 붙은 형식으로 문자열로 만든 후,
- LIKE 연산자를 이용해 '2025-01'과 같은 일자를 찾는것입니다.주의DATE_FORMAT 타입은 성능이 중요한 대규모 데이터베이스에서는 효율이 떨어지는 특징이 있습니다.
1-1. TO_CHARDATE_FORMAT을 사용하는 MYSQL과 다르게, 오라클에서는 TO_CHAR을 사용합니다.
2. YEAR(), MONTH() 함수
YEAR()
YEAR()함수는 DATE 타입에 바로 적용해서 년도를 추출하는 함수입니다.
예문
SELECT * FROM [테이블명] WHERE YEAR(날짜 타입 컬럼명) = '2021';
--- 컬럼에서 년도가 2021년인 데이터 조회
MONTH()
MONTH()함수도 위와 같이 DATE 타입 컬럼에 바로 적용해서 월을 추출하는 함수입니다.
예문
SELECT * FROM [테이블명] WHERE MONTH(날짜 타입 컬럼명) = '12';
--- 컬럼에서 월이 12월인 데이터 조회
YEAR + MONTH : CONCAT을 이용하여 조회
문자열을 합치는데에 사용되는 CONCAT(STR1, STR2, ...)함수를 이용해 연도와 월을 같이 조회하는 방법입니다.
예문
SELECT * FROM [테이블명]
WHERE CONCAT(YEAR(날짜 타입 컬럼명), LPAD(MONTH(날짜 타입 컬럼명), 2, '0')) = '202512';
--- 컬럼에서 2025년 12월인 데이터 조회
- LPAD : 문자열을 왼쪽으로 패딩
-
LPAD(STRING, LENGTH, PADDED WORD) --- 문자열을 length(길이) 만큼 표현하고, 부족한 글자는 padded word로 왼쪽에 채운다
- LPAD(MONTH(날짜 타입 컬럼명), 2, '0') 에서 숫자 2 : 월을 2자리 수로
- LPAD(MONTH(날짜 타입 컬럼명), 2, '0') 에서 '0' : 2자리에서 부족한 글자는 0으로 채움3. BETWEEN범위를 지정해 해당 범위 내의 데이터를 조회하도록 하는 함수입니다.
이렇게 적으면 2024년 12월 1월부터 2025년 1월 1일까지의 데이터를 조회할 수 있습니다.3-1. 부등호 이용부등호를 이용해서 BETWEEN 처럼 조회할 수 있습니다.SELECT * FROM [테이블명] WHERE 날짜컬럼 BETWEEN '2024-12-01' AND '2025-01-01';
SELECT * FROM [테이블명] WHERE 날짜컬럼 >= '2024-12-01' AND 날짜컬럼 <= '2025-01-01';
'SQL' 카테고리의 다른 글
[프로그래머스 SQL KIT] SELECT#1 - 특정 세대의 대장균 찾기 (0) | 2025.04.08 |
---|---|
[SQL] NULL 값 변환하기 - IFNULL, COALESCE (1) | 2025.01.28 |
[프로그래머스 SQL KIT] JOIN #6 - 그룹별 조건에 맞는 식당 목록 출력 (1) | 2025.01.28 |
[프로그래머스 SQL KIT] JOIN #5 - FrontEnd 개발자 찾기 : bit 연산 (1) | 2025.01.28 |
[프로그래머스 SQL KIT] JOIN #4 - 있었는데요 없었습니다 : 날짜 비교 연산 (0) | 2025.01.25 |