본문 바로가기
Data/MySQL

[MySQL] DATE 데이터 타입 추출

by prinha 2020. 12. 15.
728x90
반응형

1. 연도, 월, 일 추출

1) YEAR

SELECT * FROM copang_main.member WHERE YEAR(birthdaty) = '1995';

2) MONTH

SELECT * FROM copang_main.member WHERE MONTH(sign_up_day) IN (7,8,9);

3) DAYOFMONTH

SELECT * FROM copang_main.member WHERE DAYOFMONTH(sign_up_day) BETWEEN 15 AND 31; -- 각 달의 후반부

 

2. 날짜, 시간 추출

1) SYSDATE() - 현재 시스템의 날짜와 시간 동시에 출력

SELECT sysdate() from dual;

2) CURDATE() - 현재 시스템의 날짜만 출력

SELECT curdate() from dual;

3) CURTIME() - 현재 시스템의 시간만 출력

select curtime() from dual;

 

3. 날짜 간의 차이 구하기

1) DATEDIFF(날짜 a, 날짜 b) = a-b

SELECT email, sign_up_day, DATEDIFF(sign_up_day, '2020-01-01') FROM copang_main.member;

2) DATE_ADD() - 날짜 더하기 / INTERVAL 300 DAY - 300일을 더한 날짜

SELECT sign_up_day, DATE_ADD(sign_up_day, INTERVAL 300 DAY) FROM copang_main.member;

3) DATE_SUB() - 날짜 뺴기

SELECT sign_up_day, DATE_SUB(sign_up_day, INTERVAL 300 DAY) FROM copang_main.member;

 

4. UNIX_TIMESTAMP

날짜와 시간이 특정 서식에 맞게 적혀있는게 아니라, 1553315220 이런식으로 큰 숫자값이 적혀있는 경우가 있는데, 이런 형식의 날짜시간 값을 UNIX Timestamp라고  한다. 특정 날짜의 특정 시간이 1970년 1월 1일 기준으로 총 몇 초가 지났는지 나타낸 값이다.

SELECT email, sign_up_day, UNIX_TIMESTAMP(sign_up_day) FROM copang_main.member;

 

사람이 읽을 수 있는 날짜 형태로 바꿔야 하는데, 그럴 때 FROM_UNIXTIME() 함수를 사용한다.

SELECT email, sign_up_day, FROM_UNIXTIME(UNIX_TIMESTAMP(sign_up_day)) FROM copang_main.member;

 


날짜, 시간 관련 데이터 타입 : https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html

날짜, 시간 관련 함수 : https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

728x90
반응형

'Data > MySQL' 카테고리의 다른 글

[MySQL] Pagination LIMIT  (0) 2020.12.15
[MySQL] 정렬 - 숫자형/문자열형 구별  (0) 2020.12.15
[MySQL] 대소문자 구별 - BINARY  (0) 2020.12.15
[MySQL] 조건 표현식  (0) 2020.12.15
[MySQL] Primary Key  (0) 2020.12.14