반응형
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;
'IT > SQL' 카테고리의 다른 글
[MySQL] 컬럼 이름 바꿔서 보여주기 Alias (AS) (0) | 2022.01.26 |
---|---|
[MySQL] NULL 이 있는 로우 조회하기 (0) | 2022.01.26 |
[MySQL] 대소문자 구분해서 검색하기 _ BINARY (0) | 2022.01.23 |
[MySQL] % ' " _ 문자로 쓰고 싶을 땐 이스케이핑 (0) | 2022.01.23 |
[MySQL] WHERE 절 _ 기본적인 조건 표현식 모음 (LIKE, BETWEEN, IN 등) (0) | 2022.01.23 |
댓글