Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 날짜에 하루 빼는 방법 – DATE_SUB() 함수 완벽 가이드

MySQL에서 특정 날짜에서 하루를 빼고 싶다면 DATE_SUB() 함수를 사용하면 됩니다. 이 함수는 지정한 날짜에서 원하는 시간 간격(interval)만큼을 빼주는 아주 유용한 날짜 계산 함수입니다.

1. 예제 테이블 생성하기

먼저 실습에 사용할 테이블을 만들어 보겠습니다. 입학일(AdmissionDate)을 저장하는 timestamp 타입의 컬럼을 가진 테이블입니다.

mysql> create table DemoTable
-> (
-> AdmissionDate timestamp
-> );
Query OK, 0 rows affected (1.05 sec)

2. 데이터 삽입하기

insert 명령어를 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values('2019-01-01');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('2018-12-31');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('2017-03-13');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('2019-01-02');
Query OK, 1 row affected (0.08 sec)

3. 저장된 데이터 확인하기

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+---------------------+
| AdmissionDate |
+---------------------+
| 2019-01-01 00:00:00 |
| 2018-12-31 00:00:00 |
| 2017-03-13 00:00:00 |
| 2019-01-02 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)

4. DATE_SUB()로 하루 빼기

이제 핵심인 하루를 빼는 쿼리입니다. DATE_SUB(날짜컬럼, INTERVAL 1 DAY) 형태로 작성하면 됩니다.

mysql> select date_sub(AdmissionDate,interval 1 day) from DemoTable;

실행 결과는 다음과 같습니다. 모든 날짜에서 정확히 하루씩 빠진 것을 확인할 수 있습니다.

+----------------------------------------+
| date_sub(AdmissionDate,interval 1 day) |
+----------------------------------------+
| 2018-12-31 00:00:00 |
| 2018-12-30 00:00:00 |
| 2017-03-12 00:00:00 |
| 2019-01-01 00:00:00 |
+----------------------------------------+
4 rows in set (0.00 sec)

참고: 다양한 활용 방법

DATE_SUB() 함수는 'day' 외에도 여러 단위를 지원합니다. 예를 들어 INTERVAL 1 MONTH(한 달), INTERVAL 1 YEAR(1년), INTERVAL 1 HOUR(1시간) 등으로 변경하여 다양한 기간 계산이 가능합니다. 또한 반대로 날짜에 기간을 더하고 싶다면 DATE_ADD() 함수를 사용하면 됩니다.