MySQL

[MySQL] 시간 날짜 더하기 빼기 함수 (DATE_ADD, DATE_SUB)

itaeiou 2021. 12. 15. 13:32
반응형

현재 날짜 / 시간

MySQL에는 현재 날짜 / 현재 시간을 알려주는 함수가 여러가지가 있습니다.

대표적으로 now()가 있지만 그 외에 어떤 것들이 있는지 알아보겠습니다.

 

now, sysdate, current_timestampYYYY-MM-DD HH:mm:ss 형태로 리턴합니다.

curdate, current_date는 YYYY-MM-DD로 현재 날짜만 반환하고,

curtime, current_timeHH:mm:ss 형태로 현재 시간만 반환합니다.

 

필요한 형태에 맞춰서 함수를 사용하면 됩니다.

날짜와 시간까지 필요한 경우에는 now, sysdate, current_timestamp를 사용하시고,

날짜만 필요할 땐 curdate, 시간만 필요할 땐 curtime을 사용하시면 되겠습니다.

// 2021-12-14 16:57:46
SELECT now();
SELECT sysdate();
SELECT current_timestamp();

// 2021-12-14
SELECT curdate();
SELECT current_date();

// 16:57:46
SELECT curtime();
SELECT current_time();

 

날짜 시간 더하기

날짜 시간 더하는 함수는 DATE_ADD, ADDDATE, ADDTIME 3가지가 있습니다.

주로 DATE_ADD를 가장 많이 사용하고

일단위로 계산은 ADDDATE, 초단위 계산은 ADDTIME을 사용할 수도 있습니다.

-- 원하는 단위만큼 더하기
DATE_ADD(date, INTERVAL value addunit)
ADDDATE(date, INTERVAL value addunit)

-- 일단위, 초단위
ADDDATE(date, adddays)
ADDTIME(date, addtime)

앞의 date는 기준시간, 뒤에는 더해질 시간입니다.

-- DATE_ADD
SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR);		-- '2022-12-15 11:20:33'
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);		-- '2022-01-15 11:20:33'
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);			-- '2021-12-16 11:20:33'
SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR);		-- '2021-12-15 12:20:33'
SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE);		-- '2021-12-15 11:21:33'
SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND);		-- '2021-12-15 11:20:34'
SELECT DATE_ADD(NOW(6), INTERVAL 1 MICROSECOND);	-- '2021-12-15 11:20:33.268404'

-- ADDDATE
SELECT ADDDATE(NOW(), INTERVAL 1 YEAR);			-- '2022-12-15 11:20:33'
SELECT ADDDATE(NOW(), INTERVAL 1 MONTH);		-- '2022-01-15 11:20:33'
SELECT ADDDATE(NOW(), INTERVAL 1 DAY);			-- '2021-12-16 11:20:33'
SELECT ADDDATE(NOW(), INTERVAL 1 HOUR);			-- '2021-12-15 12:20:33'
SELECT ADDDATE(NOW(), INTERVAL 1 MINUTE);		-- '2021-12-15 11:21:33'
SELECT ADDDATE(NOW(), INTERVAL 1 SECOND);		-- '2021-12-15 11:20:34'
SELECT ADDDATE(NOW(6), INTERVAL 1 MICROSECOND);		-- '2021-12-15 11:20:33.268404'

-- ADDDATE DAYS
SELECT ADDDATE(NOW(), 30);			-- '2022-01-14 11:23:46'

-- ADDTIME
SELECT ADDTIME(NOW(), "10");			-- '2021-12-15 11:25:06'
SELECT ADDTIME(NOW(), "10 10:10:10");		-- '2021-12-25 21:35:06'

 

날짜 시간 빼기

날짜 시간 빼는 함수는 DATE_SUB, SUBDATE, SUBTIME 3가지가 있습니다.

주로 DATE_SUB를 가장 많이 사용하고

일단위로 계산은 SUBDATE, 초단위 계산은 SUBTIME을 사용할 수도 있습니다.

-- 원하는 단위만큼 빼기
DATE_SUB(date, INTERVAL value addunit)
SUBDATE(date, INTERVAL value addunit)

-- 일단위, 초단위
SUBDATE(date, adddays)
SUBTIME(date, addtime)

더하기랑 동일하게 앞의 date는 기준시간, 뒤에는 뺄 시간입니다.

-- DATE_SUB
SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR);		-- '2020-12-15 11:20:33'
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);		-- '2021-11-15 11:20:33'
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);			-- '2021-12-14 11:20:33'
SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR);		-- '2021-12-15 10:20:33'
SELECT DATE_SUB(NOW(), INTERVAL 1 MINUTE);		-- '2021-12-15 11:19:33'
SELECT DATE_SUB(NOW(), INTERVAL 1 SECOND);		-- '2021-12-15 11:20:32'
SELECT DATE_SUB(NOW(6), INTERVAL 1 MICROSECOND);	-- '2021-12-15 11:20:33.268402'

-- SUBDATE
SELECT SUBDATE(NOW(), INTERVAL 1 YEAR);			-- '2020-12-15 11:20:33'
SELECT SUBDATE(NOW(), INTERVAL 1 MONTH);		-- '2021-11-15 11:20:33'
SELECT SUBDATE(NOW(), INTERVAL 1 DAY);			-- '2021-12-14 11:20:33'
SELECT SUBDATE(NOW(), INTERVAL 1 HOUR);			-- '2021-12-15 10:20:33'
SELECT SUBDATE(NOW(), INTERVAL 1 MINUTE);		-- '2021-12-15 11:19:33'
SELECT SUBDATE(NOW(), INTERVAL 1 SECOND);		-- '2021-12-15 11:20:32'
SELECT SUBDATE(NOW(6), INTERVAL 1 MICROSECOND);		-- '2021-12-15 11:20:33.268402'

-- SUBDATE DAYS
SELECT SUBDATE(NOW(), 30);			-- '2021-11-15 13:30:34'

-- SUBTIME
SELECT SUBTIME(NOW(), "10");			-- '2021-12-15 13:30:59'
SELECT SUBTIME(NOW(), "10 10:10:10");		-- '2021-12-05 03:21:11'

 

반응형