본문 바로가기
IT/SQL

[MySQL] DATE 관련 SQL 함수 모음 (CURDATE, DATEDIFF 등)

by marketinkerbell 2022. 1. 23.
반응형

 

DATE 데이터 타입을 갖는 컬럼의 값들을 다룰  때 자주 쓰는 함수들 모음

 

 

 

1. 연도, 월, 일 추출

 

연도 : YEAR ( )

월 : MONTH ( )

일 : DAYOFMONTH ( )

# member 테이블에 birthday 날짜의 연도가 1998인 데이터 출력
SELECT * FROM member WHERE YEAR(birthday) = '1998';


# member 테이블에 birthday 날짜의 월이 6,7,8인 데이터 출력
SELECT * FROM member WHERE MONTH(birthday) IN (6,7,8);


# member 테이블에 birthday 날짜의 일이 15일~17일인 데이터 출력
SELECT * FROM member WHERE DAYOFMONTH(birthday) BETWEEN 15 AND 17;

 

 

 

2. 날짜 간의 차이 구하기

 

DATEDIFF

DATE 는 날짜, DIFF 는 Difference의 줄임말로 '차이' 를 의미.

 

DATEDIFF (날짜 a, 날짜 b) 

'날짜 a - 날짜 b' 를 해서 그 차이 일수를 알려줌 

 

DATEDIFF ( ’2022-01-01’, ’2022-01-03’)의 값은 2

 

SELECT id, sign_up_day, DATEDIFF(sign_up_day, CURDATE()) FROM member;
# member 테이블에서 id, sign_up_day 칼럼과 sign_up_day 와 오늘 날짜의 차이 값 칼럼을 출력
# sign_up_day 는 가입일 칼럼
# CURDATE() 는 오늘 날짜를 구하는 함수
# DATEDIFF(sign_up_day, CURDATE())  는 테이블에 칼럼으로 존재하는 칼럼은 아닌데 존재하는 칼럼들 계산한 것을 칼럼으로 만들어서 출력 가능




SELECT id, sign_up_day, DATEDIFF(sign_up_day, birthday)/365 FROM member;
#가입일(sign_up_day)-생일(birthday) 값을, 365로 나눠주면 각 회원이 몇 살일 때 가입했는지 알 수 있음

 

위 커리문 예제에서도 등장한 

CURDATE ( ) 

오늘 날짜를 구하는 함수 

 

 

 

 

3. 날짜에서 며칠 더하기 빼기

 

날짜에서 며칠 더하기

DATE_ADD ( ) , INTERVAL

 

 

날짜에서 며칠 빼기

DATE_SUB ( ), INTERVAL

 

 

가입일(sign_up_day) 기준으로 30일 이후의 날짜를 구하려면 

SELECT id, sign_up_day, DATE_ADD(sign_up_day, INTERVAL 30 DAY) FROM member;

 

 

가입일(sign_up_day) 기준으로 20일 이전의 날짜를 구하려면 

SELECT id, sign_up_day, DATE_SUB(sign_up_day, INTERVAL 20 DAY) FROM member;

 

 

 

 

 

 

 

댓글