이제 데이터 공부 안하는 블로그

[SQL 기초] SQL 다양한 함수 (DATE 데이터 타입 관련 함수) 본문

SQL

[SQL 기초] SQL 다양한 함수 (DATE 데이터 타입 관련 함수)

공사노비 2021. 9. 20. 13:27

 

1. 연도, 월, 일 추출하기

 

YEAR 함수

# birthday 컬럼에서 1992년 생인 회원만 조회하기

SELECT *
FROM member
WHERE YEAR(birthday) = '1992';

 

MONTH 함수

# sign_up_day 컬럼에서 6,7,8월에 가입한 회원만 조회하기

SELECT *
FROM member
WHERE MONTH(sign_up_day) IN (6,7,8);

 

DAYOFMONTH 함수

# 각 달의 후반부(15일 ~ 31일)에 가입했던 회원들만 조회하기
SELECT *
FROM member
DAYOFMONTH(sign_up_day) BETWEEN 15 AND 31

 

2. 각 날짜간의 차이 구하기

 

DATEDIFF 함수

# DATEDIFF(날짜1, 날짜2)를 사용하면 '날짜1-날짜2' 를 해서 날짜 간의 차이를 구해줌
# 출력값은 2

DATEDIFF(’2018-01-05’, ’2018-01-03’)

 

# member 테이블에서 각 회원이 가입한 일자가 2019년 1월 1일 기준으로 몇 일 이후인지 구하기

SELECT sign_up_day, DATEDIFF(sign_up_day, '2019-01-01')
FROM member;

 

# DATEDIFF 함수로 회원들이 몇 살일 때 가입했는지 보기

SELECT sign_up_day, DATEDIFF(sign_up_day, birthday) / 365
FROM member;

 

CURDATE 함수

# 오늘 날짜를 구하는 함수는 CURDATE()

SELECT DATEDIFF(sign_up_day, CURDATE())
FROM member;

 

 

DATE_ADD 함수로 날짜 더하기

# sign_up_day 컬럼의 값에 300일을 더한 날짜를 나타냄

SELECT sign_up_day, DATE_ADD(sign_up_day, INTERVAL 300 DAY)
FROM member

 

 

DATE_SUB 함수로 날짜 빼기

# sign_up_day 컬럼의 값에 250일을 뺀 날짜를 나타냄

SELECT sign_up_day, DATE_SUB(sign_up_day, INTERVAL 250 DAY)
FROM main.member

 

 

 

FROM_UNIXTIME 함수

날짜와 시간을 나타내는 컬럼인데 말도 안되는 큰 수가 들어있다면 Unix timestamp가 아닌지 의심해봐야한다. Unix timestampsms 특정 날짜의 특정 시간을, 1970년 1월 1일 기준으로 총 몇 초가 지났는지 나타내는 값이다. 이런 경우는 FROM_UNIXTIME 함수를 써서 우리가 읽을 수 있는 형태로 바꿔주면 된다.

SELECT sign_up_day, FROM_UNIXTIME(UNIX_TIMESTAMP(sign_up_day))
FROM member