[SQL] DATE TYPE 다루기 - 특정 일자 조회하기 DATE_FORMAT, YEAR(), MONTH(),

EnaZero·2025년 1월 16일
0

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월의 데이터 조회

위 코드의 경우엔
1. CALENDAR TABLE에서 날짜컬럼을 4자리 연도와 2자리 월만 추출해 '-'로 붙은 형식으로 문자열로 만든 후,
2. LIKE 연산자를 이용해 '2025-01'과 같은 일자를 찾는것입니다.

주의

DATE_FORMAT 타입은 성능이 중요한 대규모 데이터베이스에서는 효율이 떨어지는 특징이 있습니다.

1-1. TO_CHAR

DATE_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

범위를 지정해 해당 범위 내의 데이터를 조회하도록 하는 함수입니다.

SELECT * FROM [테이블명]
WHERE 날짜컬럼 BETWEEN '2024-12-01' AND '2025-01-01';

이렇게 적으면 2024년 12월 1월부터 2025년 1월 1일까지의 데이터를 조회할 수 있습니다.

3-1. 부등호 이용

부등호를 이용해서 BETWEEN 처럼 조회할 수 있습니다.

SELECT * FROM [테이블명]
WHERE 날짜컬럼 >= '2024-12-01' AND 날짜컬럼 <= '2025-01-01';

0개의 댓글