MySQL에서 현재 날짜·시간으로 30일 빼기
MySQL에서 현재 날짜와 시간(datetime)으로부터 30일을 빼려면, 먼저 현재 날짜·시간 정보를 구한 뒤 DATE_SUB() 함수를 활용하면 됩니다. 현재 날짜·시간은 NOW() 함수로 간단하게 조회할 수 있습니다.
1. DATE_SUB() 함수 기본 문법
현재 날짜·시간에서 30일을 빼는 기본 문법은 다음과 같습니다.
DATE_SUB(NOW(),INTERVAL 30 DAY);
이 문법은 먼저 NOW()로 현재 날짜·시간을 계산한 후, 그 값에서 30일을 차감하는 방식으로 동작합니다.
2. 현재 날짜·시간 조회하기
먼저 NOW() 함수를 사용해 현재 날짜·시간을 확인해 보겠습니다.
mysql> select now();
실행 결과는 다음과 같습니다.
+---------------------+ | now() | +---------------------+ | 2018-11-23 16:38:43 | +---------------------+ 1 row in set (0.00 sec)
3. DATE_SUB()로 30일 차감하기
이제 DATE_SUB() 함수를 사용해 현재 날짜·시간에서 30일을 빼보겠습니다.
mysql> select date_sub(now(),interval 30 day);
30일이 차감된 날짜와 시간이 출력됩니다.
+---------------------------------+ | date_sub(now(),interval 30 day) | +---------------------------------+ | 2018-10-24 16:38:50 | +---------------------------------+ 1 row in set (0.00 sec)
4. 날짜(연·월·일)만 결과로 얻기
결과에서 시간 정보를 제외하고 날짜 값만 얻고 싶다면, NOW() 대신 CURDATE() 함수를 사용하면 됩니다. CURDATE()는 현재 날짜만 반환하는 함수입니다.
mysql> select date_sub(curdate(),interval 30 day);
실행 결과는 다음과 같습니다.
+-------------------------------------+ | date_sub(curdate(),interval 30 day) | +-------------------------------------+ | 2018-10-24 | +-------------------------------------+ 1 row in set (0.00 sec)
참고: 더 간결한 표현식
MySQL에서는 DATE_SUB() 함수 대신 산술 연산자를 사용해도 동일한 결과를 얻을 수 있습니다.
SELECT NOW() - INTERVAL 30 DAY;
두 방식 모두 성능상 차이는 없으므로, 코드의 가독성에 따라 편한 방법을 선택해 사용하면 됩니다.