[SQL] MySQL 날짜관련 함수 사용시 주의할 점

2023. 12. 13. 19:37DB/MYSQL

728x90

 

MySQL 에서 지원하는 DATE_ADD / DATE_SUB 사용시 INTERVAL 을 선언하여 시간 유형의 조합으로 많이 쓰이는데,

아무 생각 없이 INTERVAL 을 사용할 경우 주의가 필요한 사항이 있어 기록.

 

[문제상황]  2월 같은 윤달의 경우 2월이 28일까지 있으면, 1월은 31일까지 존재하는데, 1월에 한 달을 더 할 경우 문제 발생

문제상황
: '2019-01-30 12:00:00' 와 '2019-01-31 11:00:00'의 경우 시간의 순서 상으로 전자 ('2019-01-30 12:00:00')가 먼저 발생하게 되는데, 두 날짜에 아래와 같이 1달을 더하는 함수를 적용할 경우 출력 값을 확인해보면 동일하게 1달을 더했지만 후자('2019-01-31 11:00:00') 의 출력값이 시간 순서 상으로 더 먼저인 것으로 출력되는 상황이 발생
select DATE_ADD('2019-01-30 12:00:00', INTERVAL 1 MONTH) AS '2019-01-30:12:00:00_add1M'
	, DATE_ADD('2019-01-31 11:00:00', INTERVAL 1 MONTH)  AS '2019-01-31:11:00:00_add1M'

 

항상 시간 날짜관련 함수가 편리하지만, 한 번 더 생각해보고 사용하는 주의가 필요

 

참고 : https://ohgym.tistory.com/40

728x90