네, MySQL에서는 DATE_SUB() 함수를 사용하여 날짜에서 원하는 일 수만큼 손쉽게 뺄 수 있습니다. 이 함수는 지정한 날짜 값에서 특정 시간 간격(Interval)을 차감한 결과를 반환합니다.
DATE_SUB() 기본 문법
SELECT DATE_SUB(yourColumnName, INTERVAL yourAmountOfDays DAY) FROM yourTableName;
실제 동작 과정을 이해하기 위해 예제 테이블을 만들어 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 입학일(AdmissionDate)을 저장할 테이블을 생성합니다.
mysql> CREATE TABLE DemoTable660(AdmissionDate datetime); Query OK, 0 rows affected (0.82 sec)
2. 데이터 삽입
INSERT 명령어를 사용해 몇 개의 날짜 레코드를 추가합니다.
mysql> INSERT INTO DemoTable660 VALUES('2018-01-24');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable660 VALUES('2019-07-10');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable660 VALUES('2020-11-20');
Query OK, 1 row affected (0.59 sec)3. 전체 레코드 조회
SELECT 문으로 테이블의 모든 데이터를 확인합니다.
mysql> SELECT * FROM DemoTable660;
실행 결과는 다음과 같습니다.
+---------------------+ | AdmissionDate | +---------------------+ | 2018-01-24 00:00:00 | | 2019-07-10 00:00:00 | | 2020-11-20 00:00:00 | +---------------------+ 3 rows in set (0.00 sec)
4. 날짜에서 일 수 빼기
이제 DATE_SUB() 함수를 사용해 각 날짜에서 5일을 빼는 쿼리를 실행해 보겠습니다.
mysql> SELECT DATE_SUB(AdmissionDate, INTERVAL 5 DAY) FROM DemoTable660;
결과를 보면 모든 날짜가 정확히 5일씩 감소한 것을 확인할 수 있습니다.
+----------------------------------------+ | DATE_SUB(AdmissionDate, INTERVAL 5 DAY) | +----------------------------------------+ | 2018-01-19 00:00:00 | | 2019-07-05 00:00:00 | | 2020-11-15 00:00:00 | +----------------------------------------+ 3 rows in set (0.00 sec)
추가로 알아두면 좋은 팁
- SUBDATE()는 DATE_SUB()의 별칭(Alias)으로, 두 함수는 완전히 동일하게 동작합니다.
- 일(DAY) 외에도
MONTH,YEAR,HOUR,MINUTE,SECOND등 다양한 시간 단위를 INTERVAL로 지정할 수 있습니다. - 반대로 날짜에 시간 간격을 더하려면 DATE_ADD() 함수를 사용하면 됩니다.