SQL 날짜함수 정리

MoonLight·2021년 7월 14일
0

데이터베이스

목록 보기
1/12

I. 날짜 데이터 타입 관련 함수


0x01 연도, 월, 일 추출하기

  • YEAR 함수
    • 날짜 값에서 연도만 뽑아오기
SELECT * FROM table이름 WHERE YEAR(DATE타입의컬럼명) = '1992'
  • MONTH 함수
    • 여름(6, 7, 8월)에 가입한 회원들만 조회하기
SELECT * FROM table이름 WHERE MONTH(DATE타입의컬럼명) IN (6, 7, 8);
  • DAYOFMONTH 함수
    • 각 달의 후반부(15일~31일)에 가입했던 회원들만 조회하기
SELECT * FROM table이름 WHERE DAYOFMONTH(DATE타입의컬럼명) BETWEEN 15 AND 31;

0x02 날짜 간의 차이 구하기

  • DATEDIFF 함수 (Date Difference의 줄임), CURDATE 함수
    • 날짜간의 차이 구하기
/* DATEDIFF(날짜 a, 날짜 b)를 사용하면 
'날짜 a - 날짜 b'를 해서 그 차이 일수를 조회 */

SELECT email, sign_up_day, DATEDIFF(sign_up_day, '2019-01-08') FROM table이름;
SELECT email, sign_up_day, DATEDIFF(sign_up_day, CURDATE()) FROM table이름;
# CURDATE()는 오늘 날짜를 구하는 함수

0x03 날짜 더하기 빼기

  • DATE_ADD() : 날짜에 며칠 더하기 함수
    • DATE_ADD(sign_up_day, INTERVAL 300 DAY) => sign_up_day컬럼의 값에 300일을 더한 날짜
SELECT email, sign_up_day, DATE_ADD(sign_up_day, INTERVAL 300 DAY) 
FROM table이름;
  • DATE_SUB() : 날짜에 며칠 빼는 함수
    • DATE_SUB(sign_up_day, INTERVAL 300 DAY) => sign_up_day컬럼의 값에 250일을 뺀 날짜
SELECT email, sign_up_day, DATE_SUB(sign_up_day, INTERVAL 250 DAY) 
FROM table이름;

0x04 UNIX Timestamp 값

  • UNIX Timestamp 형식의 날짜시간은 1970년 1월 1일을 기준으로, 총 몇 초가 지났는지를 나타낸다.

    • DATA타입의 값을 Unix Timestamp로 바꾸는 UNIX_TIMESTAMP() 함수를 사용한다.
SELECT sign_up_day, UNIX_TIMESTAMP(sign_up_day) FROM member;
  • 만약 Unix Timestamp 형식을 다시 DATA타입으로 바꾸고 싶으면 FROM_UNIXTIME() 함수를 사용한다.
    • 하지만, DATA 타입 그대로 나오는 것이 아니고 시간 정보도 포함해서 출력해준다.
SELECT SELECT sign_up_day, FROM_UNIXTIME(UNIX_TIMESTAMP(sign_up_day)) 
FROM member;
profile
hello world :)

0개의 댓글