CS/데이터베이스
SQL(9) 날짜/시간 관련 함수
hyomee2
2024. 7. 31. 20:44
1. 날짜/시간 관련 함수
(1) ADDDATE(), SUBDATE()
SELECT
ADDDATE('2023-05-31', INTERVAL 30 DAY) -- 30일 뒤의 날짜 반환
, ADDDATE('2023-05-31', INTERVAL 6 MONTH) -- 6개월 뒤의 날짜 반환
, SUBDATE('2023-05-31', INTERVAL 30 DAY) -- 30일 전의 날짜 반환
, SUBDATE('2023-05-31', INTERVAL 6 MONTH); -- 6개월 전의 날짜 반환
(2) ADDTIME(), SUBTIME()
SELECT
ADDTIME('2023-05-31 09:00:00', '1:0:1') -- 1시간 1초 뒤의 날짜(시간포함) 반환
, SUBTIME('2023-05-31 09:00:00', '1:0:1'); -- 1시간 1초 전의 날짜(시간포함) 반환
(3) CURDATE(), CURRENT_DATE(), CURRENT_DATE
: 현재의 시스템 날짜 반환
SELECT CURDATE(), CURRENT_DATE(), CURRENT_DATE;
-- CURRENT_DATE는 함수이긴 한데, 괄호 없이 사용 가능
(4) CURTIME(), CURRENT_TIME(), CURRENT_TIME
: 현재의 시스템 시간 반환
SELECT CURTIME(), CURRENT_TIME(), CURRENT_TIME;
-- CURRENT_TIME은 함수인긴 한데 괄호 없이 사용 가능
(5) NOW(), LOCALRTIME, LOCALTIME(), LOCALTIMESTAMP(), LOCALTIMESTAMP
: 현재의 시스템 날짜와 시간 반환
SELECT NOW(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP(), LOCALTIMESTAMP;
-- LOCALTIMESTAMP()도 함수긴 한데 괄호없이 사용 가능
(6) YEAR(날짜), MONTH(날짜), DAYOFMONTH(날짜)
: 날짜의 년, 월, 일을 반환
SELECT YEAR(CURDATE()), MONTH(CURDATE()), DAYOFMONTH(CURDATE());
(7) HOUR(시간), MINUTE(시간), SECOND(시간), MICROSECOND(시간)
: 시간의 시, 분, 초, 마이크로초를 반환
SELECT HOUR(CURTIME()), MINUTE(CURTIME()), SECOND(CURTIME()), MICROSECOND(CURTIME(6));
-- CURTIME 함수 내의 숫자는, 초를 소수 6째자리까지 출력한다는 의미
(8) DATE(), TIME()
: 날짜, 시간 반환
SELECT DATE(NOW()), TIME(NOW());
(9) DATEDIFF(), TIMEDIFF()
SELECT
DATEDIFF('2023-05-31', '2023-02-27') # 앞의 날짜 - 뒤의 날짜
, TIMEDIFF('17:07:11', '13:06:10'); # 앞의 시간 - 뒤의 시간
(10) DAYOFWEEK(), MONTHNAME(), DAYOFYEAR()
SELECT DAYOFWEEK(CURDATE()), MONTHNAME(CURDATE()), DAYOFYEAR(CURDATE());
-- DAYOFWEEK(날짜): 해당 날짜의 요일에 따른 값 반환 (일: 1, 월: 2,. ..)
-- MONTHNAME(날짜): 해당 날짜의 달 이름(JANUARY, ..) 반환
-- DAYOFYEAR(날짜): 해당 날짜가 이번 해의 몇 번째 날짜인지 반환
(15) LAST_DAY()
: 해당 날짜가 속한 달의 마지막 날을 반환
SELECT LAST_DAY('2023-02-01');
(16) MAKEDATE(), MAKETIME()
SELECT MAKEDATE(2023, 32), MAKETIME(17, 03, 02);
-- MAKEDATE(년도, 숫자): 해당 년도의 숫자번째 날을 반환
-- MAKETIME(시, 분, 초): 시 분 초를 반환
(17) QUARTER(날짜)
: 해당 날짜의 분기 반환
SELECT QUARTER('2023-05-01');
(18) TIME_TO_SEC(시간)
: 시간을 초로 바꿔 반환
SELECT TIME_TO_SEC('1:1:1');