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

MySQL에서 어제 날짜 구하는 방법 – subdate() 함수 완벽 가이드

MySQL에서 특정 날짜의 하루 전, 즉 '어제' 날짜를 구하고 싶다면 subdate() 함수를 사용하면 됩니다. 이 함수는 지정한 날짜에서 원하는 만큼의 시간 간격을 빼주는 역할을 합니다.

subdate() 함수 기본 문법

SELECT SUBDATE(날짜컬럼명, INTERVAL 1 DAY) AS 별칭 FROM 테이블명;

위 문법이 실제로 어떻게 동작하는지 예제 테이블을 만들어 단계별로 확인해 보겠습니다.

1. 예제 테이블 생성

먼저 datetime 타입의 컬럼을 가진 테이블을 생성합니다.

mysql> CREATE TABLE YesterdayDateDemo
-> (
-> VisitedDateTime DATETIME
-> );
Query OK, 0 rows affected (0.59 sec)

2. 날짜 데이터 삽입

INSERT 명령어를 사용해 현재 시간과 과거 날짜 데이터를 입력합니다.

mysql> INSERT INTO YesterdayDateDemo VALUES(NOW());
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO YesterdayDateDemo VALUES('2012-12-26 13:24:35');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO YesterdayDateDemo VALUES('2013-10-22 12:20:32');
Query OK, 1 row affected (0.16 sec)

3. 저장된 데이터 확인

SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.

mysql> SELECT * FROM YesterdayDateDemo;

실행 결과는 다음과 같습니다.

+---------------------+
| VisitedDateTime     |
+---------------------+
| 2018-12-18 14:22:48 |
| 2012-12-26 13:24:35 |
| 2013-10-22 12:20:32 |
+---------------------+
3 rows in set (0.00 sec)

4. subdate()로 어제 날짜 조회하기

이제 subdate() 함수에 INTERVAL 1 DAY 옵션을 적용하여 각 날짜에서 하루를 뺀 결과, 즉 '어제' 날짜를 조회할 수 있습니다.

mysql> SELECT SUBDATE(VisitedDateTime, INTERVAL 1 DAY) AS YesterdayDate
FROM YesterdayDateDemo;

실행 결과는 다음과 같습니다.

+---------------------+
| YesterdayDate       |
+---------------------+
| 2018-12-17 14:22:48 |
+---------------------+
1 row in set (0.00 sec)

추가 팁: CURDATE()와 함께 활용하기

테이블의 데이터가 아니라 현재 날짜 기준으로 어제를 구하고 싶다면 아래 쿼리처럼 활용할 수 있습니다.

mysql> SELECT SUBDATE(CURDATE(), INTERVAL 1 DAY) AS Yesterday;
+------------+
| Yesterday  |
+------------+
| 2018-12-17 |
+------------+

또한 MySQL 8.0 이상에서는 더 직관적인 SUBDATE(date, days) 형태나 DATE_SUB() 함수도 동일하게 사용할 수 있으니 상황에 맞게 선택하시면 됩니다.