날짜 함수
1. CURDATE(), CURRENT_DATE()
: 현재 날짜 반환
SELECT CURDATE();
SELECT CURRENT_DATE();
1-1. ADDDATE(기준일 INTERVAL 숫자 DAY/MONTH/YEAR), DATE_ADD(기준일 INTERVAL 숫자 DAY/MONTH/YEAR)
: 날짜 형식을 유지하면서 날짜 더하기
: 만약 CURDATE()+1과 같이 그냥 더할 경우 문자열로 출력(형식 유지X)
SELECT ADDDATE(기준일 INTERVAL 숫자 DAY/MONTH/YEAR) FROM [테이블명];
SELECT DATE_ADD(기준일 INTERVAL 숫자 DAY/MONTH/YEAR) FROM [테이블명];
SELECT ADDDATE(CURDATE(), INTERVAL 1 DAY);
SELECT DATE_ADD(CURDATE(), INTERVAL 1 MONTH);
SELECT ADDDATE(CURDATE(), INTERVAL -1 YEAR);
: INTERVAL이 생략되어 숫자만 올 경우 디폴트 값은 DAY로 지정
// 둘 다 동일한 코드
SELECT ADDDATE(CURDATE(), 1);
SELECT ADDDATE(CURDATE(), INTERVAL 1 DAY);
1-2. DATE_SUB(기준일, INTERVAL 숫자 DAY/MONTH/YEAR)
: 기준일에서 숫자만큼 년/월/일 빼기
// 두 개가 동일한 의미
SELECT CURDATE(), DATE_SUB(CURDATE(), INTERVAL 10 DAY);
SELECT CURDATE(), ADDDATE(CURDATE(), INTERVAL -10 DAY);
2. CURTIME(), CURRENT_TIME()
: 현재 시간 반환
SELECT CURTIME();
SELECT CURRENT_TIME();
2-1. ADDTIME(기준 날짜, 더할 시간)
: 시간 형식을 유지하면서 시간 더하기
: 더할 시간을 문자형의 시간 형식으로 작성
SELECT CURTIME(), ADTIME(CURTIME(), '1:10:5');
3. NOW()
: 현재 날짜 및 시간 반환
SELECT NOW();
3-1. ADDTIME(기준일, 더할 날짜 및 시간)
: 날짜 및 시간 형식을 유지하면서 날짜 및 시간 더하기 가능
: 더할 시간을 문자형의 날짜 및 시간 형식으로 작성
SELECT NOW(), ADDTIME(NOW(), '2 1:10:5');
4. DATEDIFF(날짜, 기준일)
: 기준일로부터 날짜까지 얼마나 지났는지 day를 반환
SELECT hiredate, DATEDIFF(CURDATE(), hiredate) FROM emp;
SELECT DATEDIFF(CURDATE(), '1999-06-10');
5. DATE_FORMAT(날짜, 지정 날짜 형식)
: 날짜를 지정한 형식으로 출력
: 형식 지정 시 큰따옴표 사용하며, 대문자와 소문자의 출력 결과가 상이함
-- 날짜를 월/일/년 순으로 출력
SELECT DATE_FORMAT('2017-06-15', "%M %D %Y");
-- 현재 일시에서 월 만 출력
SELECT DATE_FORMAT(NOW(), "%M")
-- 현재 일시에서 월/일/년/시/분/초/요일 출력
SELECT DATE_FORMAT(NOW(), "%M %d %Y %H %i %s %W")
형식 :
[연] : %Y(2023), %y(23)
[월] : %M(September), %m(09), %b(Sep), %c(9)
[일] : %d(05), %e(5)
[요일] : %W(Tuesday), %w(Tue)
[시] : %H(24시간 기준 : 13), %h(12시간 기준 : 1)
[분] : %i
[초] : %S, %s
[기타] %r : hh:mm:ss AM, PM
6. DAY(날짜), DAYOFMONTH(날짜)
: 날짜에서 일 추출
-- emp 테이블에서 입사일과 입사일의 일만 반환
SELECT hiredate, Day(hiredate) FROM emp;
SELECT hiredate, DAYOFMONTH(hiredate) FROM emp;
7. DAYNAME(날짜), DAYOFWEEK(날짜)
: 날짜에서 요일 추출
: DAYNAME은 문자열로, DAYOFWEEK는 일요일이 1인 기준 숫자로 반환
-- emp 테이블에서 hiredate의 요일 반환
SELECT hiredate, DAYNAME(hiredate) FROM emp;
-- emp 테이블에서 hiredate의 요일을 숫자로 반환
Select hiredate, DAYOFWEEK(hiredate) FROM emp;
8. HOUR()시 / MINUT() 분 / SECOND() 초 출력
: 일시에서 시/분/초 출력 가능
SELECT NOW(), HOUR(NOW());
SELECT NOW(), MINUTE(NOW());
SELECT NOW(), SECOND(NOW());
9. EXTRACT(년/월/일/요일 FROM 날짜)
: 시간 및 날짜에서 원하는 요소 추출
-- CURDATE()에서 월/연/일/주/분기 추출
SELECT CURDATE(), EXTRACT(MONTH FROM CURDATE()) AS MONTH;
SELECT CURDATE(), EXTRACT(YEAR FROM CURDATE()) AS YEAR;
SELECT CURDATE(), EXTRACT(DAY FROM CURDATE()) AS DAY;
SELECT CURDATE(), EXTRACT(WEEK FROM CURDATE()) AS WEEK;
SELECT CURDATE(), EXTRACT(QUARTER FROM CURDATE()) AS QUARTER;
-- NOW()에서 시/분/초 추출
SELECT NOW(), EXTRACT(HOUR FROM NOW()) AS HOUR;
SELECT NOW(), EXTRACT(MINUTE FROM CURDATE()) AS MINUTE;
SELECT NOW(), EXTRACT(SECOND FROM NOW()) AS SECOND;
-- CURDATE()에서 월과달을 같이 출력(형식 유지x)
SELECT CURDATE(), EXTRACT(YEAR_MONTH FROM CURDATE()) AS "YEAR_MONTH";
10. TIME_TO_SEC(시간)
: 시간을 초로 변환
-- CURTIME()를 초로 변환
SELECT CURTIME(), TIME_TO_SEC(CURTIME());
11. TIMEDIFF(시간1, 시간2)
: 시간1을 기준으로 시간2와 얼마나 차이가 나는지 시간 형식으로 출력
-- CURTIME()과 작성 시간의 차이
SELECT CURTIME(), TIMEDIFF(CURTIME(), '08:48:27');
'공부 자료 > DataBase' 카테고리의 다른 글
[SQL] 서브쿼리 (0) | 2023.09.06 |
---|---|
[SQL] JOIN(INNER, LEFT, RIGHT, SELF, FULL, NATURAL) (0) | 2023.09.05 |
[SQL] 숫자 함수 (0) | 2023.09.05 |
[SQL] 문자열 함수 (0) | 2023.09.05 |
[SQL] WHERE 및 WHERE 연산자 (0) | 2023.09.05 |