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');