IT

MySQL 날짜 시간 더하기/빼기 함수 처리 방법 (몇 시간 후, 몇 일 후, 몇 개월 후, 몇 년 후, 2월 28일 등)

귀차니즘 극복 2023. 11. 17. 08:34
728x90
반응형

최근 AWS의 DB인 MySQL을 사용하고 있습니다.

 

주로 ORACLE만 사용하다 보니 오라클 문법이 너무 익숙하기도 하고, 처음 사용하는 MySQL DB이다 보니 자주 사용하는 날짜에 대한 처리방법조차도 잘 모르겠더군요.

 

그래서 오늘은 아주 자주 사용되는 날짜에 대한 처리 방법을 알아보겠습니다.

 

오늘?

 

먼저 "오늘" 일시를 나타내려면,

SELECT NOW();

 

를 사용하면 됩니다.

 

 

 

몇 시간 전 or 후?

 

시간을 빼거나 더하려면,

-- 1시간 빼기
SELECT DATE_SUB(NOW(), INTERVAL 1 HOUR);

-- 1시간 더하기
SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR);

 

위와 같이 사용하면 되며, 실제 수행 결과는 아래와 같습니다.

 

 

오늘 2023년 11월 17일 08시 29분 11초를 기준으로

 

1시간 전인,  2023년 11월 17일 / 07시 29분 11초

 

1시간 후인,  2023년 11월 17일 / 09시 29분 11초

 

표기되는 것을 알 수 있습니다.

 

 

 

 

몇  분 전 or 후?

 

분을 빼거나 더하려면,

-- 30분 빼기
SELECT DATE_SUB(NOW(), INTERVAL 30 MINUTE);

-- 30분 더하기
SELECT DATE_ADD(NOW(), INTERVAL 30 MINUTE);

 

 

위와 같이 사용하면 되며,  실제 수행 결과는 아래와 같습니다.

 

 

오늘 2023년 11월 17일 08시 31분 07초를 기준으로

 

30분 전인,  2023년 11월 17일 / 08시 01분 07초

 

30분 후인,  2023년 11월 17일 / 09시 01분 07초

 

표기되는 것을 알 수 있습니다.

 

 

반응형

 

몇  일 전 or 후?

 

일자를 빼거나 더하려면,

-- 1일 빼기
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);

-- 1일 더하기
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY);

 

 

위와 같이 사용하면 되며,  실제 수행 결과는 아래와 같습니다.

 

 

오늘 2023년 11월 17일을 기준으로

 

1일 전인,  2023년 11월 16일

 

1일 후인,  2023년 11월 18일

 

표기되는 것을 알 수 있습니다.

 

 

 

 

 

 

몇  개월 전 or 후?

 

월을 빼거나 더하려면,

-- 1개월 빼기
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);

-- 1개월 더하기
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);

 

 

위와 같이 사용하면 되며,   실제 수행 결과는 아래와 같습니다.

 

오늘 2023년 11월 17일을 기준으로

 

1개월 전인,  2023년 10월 17일

 

1개월 후인,  2023년 12월 17일

 

표기되는 것을 알 수 있습니다.

 

 

 

 

몇  년 전 or 후?

 

년을 빼거나 더하려면,

-- 1년 빼기
SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR);

-- 1년 더하기
SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR);

 

 

위와 같이 사용하면 되며,   실제 수행 결과는 아래와 같습니다.

 

 

오늘 2023년 11월 17일을 기준으로

 

1년 전인,  2022년 11월 17일

 

1년 후인,  2024년 11월 17일

 

표기되는 것을 알 수 있습니다.

 

 

 

 

2월 29일, 366일 의 1년 후는?

 

1년이 366일인 년도가 있습니다. 바로 2024년이 그러한데요.

 

그러면 한가지 궁금해지는 부분이 있습니다.

 

바로, 2024년 2월 29일 1년 후의 날짜는 제대로 표기가 될까?

 

예상으론 1년을 더하면 2025년 2월 28일 나와야 합니다.

 

 

그 전에 해당 월의 마지막 날짜를 구하는 방법 을 먼저 알아보죠.

 

2024년 2월의 마지막 일자를 나타내려면 아래와 같이 써주면 됩니다.

 

select LAST_DAY('20240201');

 

 

 

그럼 2024년 2월 29일을 구했으니, 여기의 1년 뒤를 한번 출력해볼게요.

select LAST_DAY('20240201') AS STD_DATE,
       DATE_ADD(LAST_DAY('20240201'), INTERVAL 1 YEAR) AS ADD_DATE
;

 

 

실제 수행결과 입니다.

 

 

2024년 2월의 마지막 일자인 STD_DATE가  2024-02-29로 정상적으로 출력되었고,

 

여기에 1년 뒤인 ADD_DATE는 예상했던 것과 같이 2025년 2월 28일이 정상적으로 출력되었습니다.

 

 

 

MySQL에서는 DATE_SUB / DATE_ADD를 통해

 

분, 시간, 일, 월, 년 등 다양하게 날짜를 활용 할 수 있습니다.

 

 

참고하셔서 많은 도움 되시기 바랄게요!

 

728x90
반응형