본문 바로가기

공부 자료/DataBase

[SQL] 날짜 함수

날짜 함수

 

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