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