본문 바로가기
데이터분석

[SQL] 날짜 다루기_EXTRACT, DATE_ADD

by 규랃 2024. 2. 22.
728x90
반응형

지난 글에서 DATE_FORMAT이라는 함수를 통해 날짜의 출력형식을 내가 다루고 싶은 형태로 만드는 법을 배웠습니다. 이번글에는 그에 이어 날짜 다루는 다양한 다른 함수들에 대해 배워보는 시간을 가져보겠습니다.

 

📅  원하는 날짜정보 추출_(EXTRACT)

우리는 날짜를 다루다 보면 특정일이 어떤 요일인지 몇 번째 주인지 확인해야 하는 필요성을 느끼게 됩니다. 그럴 때 사용할 수 있는 함수에는 EXTRACT라는 함수가 있습니다. 함수 이름에서도 확인할 수 있는 것처럼 날짜 컬럼에서 우리가 원하는 정보를 추출해 내는 기능을 합니다. 

 

문법은 다음과 같습니다. 

SELECT EXTRACT(원하는 정보 FROM 날짜 컬럼)
FROM dual

 

문법에서처럼 특정 컬럼으로부터 내가 원하는 정보를 꺼내겠다는 형태로 작성할 수 있으며 날짜 컬럼을 통해서 추출할 수 있는 정보는 아래와 같습니다. 

매개변수 값 설명
YEAR
MONTH
WEEK 주(0~53)
주 시작은 월요일
DAY 날짜
QUARTER 분기
DAYOFWEEK 요일
일요일부터 토요일까지 1~7로 표현

 

위에 나열한 것 외에도 다양한 정보들을 추출할 수 있으니 필요한 것들이 있다면 링크를 타고 들어가서 확인할 수 있습니다.

 

📅  날짜 더하고 빼기_(DATE_ADD)

데이터를 다루는데 날짜를 더하는 일이 필요한가 싶을 수 있지만 생각보다 많이 활용하게 되는 함수입니다. 특히, 리텐션 쿼리를 다루거나 조회하고자 하는 날짜를 최근 n일, n개월처럼 다이나믹하게 활용할 수 있습니다.

 

문법은 다음과 같습니다.

SELECT DATE_ADD(날짜 컬럼, INTERVAL n 날짜 단위)
FROM dual

 

위 INTERVAL 옆 n은 숫자가 들어가는 영역이며 날짜변수에는 내가 원하는 날짜의 기간을 지정할 수 있습니다. n과 날짜 단위는 항상 함께 해야하며 INTERVAL 1 DAY 는 하루를 더하고 INTERVAL 1 MONTH는 한 달을 더하는 형식입니다.

 

입력할 수 있는 날짜 단위에는 다음과 같은 것들이 있으며 자주 쓰이는 것들입니다. 나열된 것 외에 다른 단위들도 존재하기 때문에 필요하다면 구글링을 통해 정보를 확인할 수 있습니다.

날짜 단위 설명
DAY 날짜를 더한다
MONTH 개월을 더한다
YEAR 년을 더한다
WEEK 주를 더한다

 

날짜를 빼주는 DATE_SUB라는 함수도 존재합니다만 DATE_ADD 함수를 입력하고 n 앞에 마이너스 기호를 붙여 INTERVAL -n 날짜변수를 동일한 기능을 하기 때문에 굳이 설명하지 않겠습니다.

 

SELECT DATE_ADD(날짜 컬럼, INTERVAL -n 날짜변수)
FROM dual

 

📅  날짜 사이 차이 구하기_(DATE_DIFF)

두 날짜간의 차이를 구하는 함수인 DATE_DIFF 도 존재합니다. 특정 유저의 구매 주기나 가입 후 얼마나 지났는지 등을 확인할 때 자주 쓰이는 함수입니다. 

 

문법은 다음과 같습니다.

SELECT DATE_DIFF(날짜 컬럼1, 날짜 컬럼2, 날짜 단위)
FROM dual

 

입력할 수 있는 날짜 단위는 위에 나열한 DATE_ADD의 날짜 단위와 거의 동일합니다.

날짜 단위 설명
DAY 날짜를 더한다
MONTH 개월을 더한다
YEAR 년을 더한다
WEEK 주를 더한다

 

-- 구매일로 부터 며칠이 지났는지 확인할 수 있다.

SELECT DATE_DIFF(NOW(), 구매일자, DAY)
FROM dual
728x90
반응형