날짜 및 시간 연산
실제 데이터를 다루면서 특정 데이터의 날짜 및 시간에 대한 연산이 필요한 경우가 있습니다. 이러한 상황에서 MySQL이 제공해주는 시간 및 날짜 연산 함수를 사용하여 해결할 수 있습니다. 이번 포스팅에선 연산 함수에 대해 알아보고 직접 실습해보도록 하겠습니다.
MySQL-시간 및 날짜 연산 함수
함수 | 기능 |
DATE_ADD() | 일정 기간 만큼 더해줌 |
DATE_SUB() | 일정 기간 만큼 빼줌 |
DATEDIFF() | 두 시점의 사이의 일수 계산 |
TIMEDIFF() | 두 시점의 사이의 시간 계산 |
PERIOD_DIFF() | 두 시점의 사이의 월 계산 |
TIMESTAMPDIFF() | 두 시점의 사이의 시간 계산 |
위와 같은 함수를 통해 시간 및 날짜에 대한 연산을 할 수 있습니다. 예제와 함께 자세하게 알아보도록 하겠습니다.
DATE_ADD(기준 시점, INTERVAL)
SELECT NOW()
, DATE_ADD(NOW(), INTERVAL 1 YEAR)
, DATE_ADD(NOW(), INTERVAL 1 MONTH)
, DATE_ADD(NOW(), INTERVAL 1 DAY)
, DATE_ADD(NOW(), INTERVAL 1 HOUR)
, DATE_ADD(NOW(), INTERVAL 1 MINUTE)
, DATE_ADD(NOW(), INTERVAL 1 SECOND);
DATE_SUB(기준 시점, INTERVAL)
SELECT NOW()
, DATE_SUB(NOW(), INTERVAL 1 YEAR)
, DATE_SUB(NOW(), INTERVAL 1 MONTH)
, DATE_SUB(NOW(), INTERVAL 1 DAY)
, DATE_SUB(NOW(), INTERVAL 1 HOUR)
, DATE_SUB(NOW(), INTERVAL 1 MINUTE)
, DATE_SUB(NOW(), INTERVAL 1 SECOND);
DATE_ADD, DATE_SUB 함수를 사용하면 기준 시점에서 INTERVAL만큼 증감이 가능하다.
DATEDIFF(종료일자, 시작일자)
-- 일수 차이 반환
SELECT DATEDIFF(NOW(), '2023-01-01');
TIMEDIFF(종료시간, 시작시간)
-- 시간 차이 반환
SELECT TIMEDIFF(NOW(), '2023-01-03 00:00:00');
PERIOD_DIFF(종료월 시작월)
SELECT period_diff('202301', '202205');
위 함수는 타 함수와는 다르게 날짜 및 시간을 지정하지 않습니다. 또한 인자에는 YYMM, YYYYMM으로 설정해주어야 연산할 수 있습니다.
TIMESTAMPDIFF(반환 형식, 시작시점, 종료시점)
SELECT TIMESTAMPDIFF(YEAR, '2023-01-01', NOW());
SELECT TIMESTAMPDIFF(MONTH, '2023-01-01', NOW());
SELECT TIMESTAMPDIFF(DAY, '2023-01-01', NOW());
위 함수는 타 함수와는 다르게 기준 인자의 순서가 다릅니다.
'RDBS > MYSQL' 카테고리의 다른 글
[MYSQL]ORDER BY절의 다중 정렬 (8) | 2023.01.16 |
---|---|
[MYSQL]REGEXP(정규 표현식) : 특정 문자열 처리 (7) | 2023.01.13 |
[MYSQL]NOW(), SYSDATE()의 차이 (5) | 2023.01.09 |
[프로그래머스]입양 시각 구하기(2)-MySQL (9) | 2023.01.09 |
[MYSQL]INSERT - 여러 건 삽입 (12) | 2023.01.09 |