MySQL 날짜로 WHERE 조건 검색 하기

SQL 검색 조건절인 WHERE에서 날짜를 비교하는 방법을 알아보겠습니다.

방법을 알아보기 전에 샘플 테이블과 데이터는 아래처럼 있다는 가정하게 설명을 하도록 하겠습니다.

 

test

+------+---------------------+
| id   | date                |
+------+---------------------+
|    1 | 2022-07-26 14:00:00 |
|    2 | 2022-07-27 13:00:00 |
|    3 | 2022-07-28 14:00:00 |
|    4 | 2022-07-29 15:00:00 |
|    5 | 2022-08-28 14:00:00 |
|    6 | 2023-07-28 14:00:00 |
+------+---------------------+

테이블 이름은 test로 하겠습니다.

데이터는 6개의 날짜 데이터가 있습니다.

 

날짜 완전 일치

검색 조건과 동일한 날짜를 추출하기 해서는 = 연산자를 사용합니다.

2022-07-26 14:00:00 데이터와 동일한 데이터를 추출하는 쿼리를 살펴보겠습니다.

SELECT *
FROM test
WHERE date = '2022-07-26 14:30:00';

 

결과

+------+---------------------+
| id   | date                |
+------+---------------------+
|    1 | 2022-07-26 14:00:00 |
+------+---------------------+

 

조건과 일치하는 데이터가 한건 추출되었습니다.

결과에서 알 수 있듯이 = 연산자는 조건과 완전 일치하는 결과만 추출합니다.

만약 날짜만 지정해 검색을 하게 되면 일치하는 데이터가 없어 검색 결과가 출력되지 않습니다.

SELECT *
FROM test
WHERE date = '2022-07-26';

 

결과

+------+---------------------+
| id   | date                |
+------+---------------------+
+------+---------------------+

날짜만 지정해 검색하고 싶은 경우에는 DATE_FORMAT을 사용해 데이터 값 형태를 동일하게 변환해 검색을 하도록 해야 합니다.

SELECT *
FROM test
WHERE DATE_FORMAT(date, '%Y-%m-%d') = DATE_FORMAT( '2022-07-26', '%Y-%m-%d');

 

결과

+------+---------------------+
| id   | date                |
+------+---------------------+
|    1 | 2022-07-26 14:00:00 |
+------+---------------------+

 

날짜가 일치하는 데이터를 추출했습니다.

DATE_FORMAT 함수의 사용 방법은 아래를 참조해주세요.

 

과거일 데이터 검색

지정한 날짜보다 과거의 데이터를 검색하고 싶은 경우에는 < 연산자를 사용합니다.

SELECT *
FROM test
WHERE date < '2022-07-29 00:00:00';

 

결과

+------+---------------------+
| id   | date                |
+------+---------------------+
|    1 | 2022-07-26 14:00:00 |
|    2 | 2022-07-27 13:00:00 |
|    3 | 2022-07-28 14:00:00 |
+------+---------------------+

 

검색 조건에 지정한 날짜보다 과거인 데이터만 추출됐습니다.

 

미래 데이터 검색

지정한 날짜보다 미래의 데이터를 검색하고 싶은 경우에는 > 연산자를 사용합니다.

SELECT *
FROM test
WHERE date >= '2022-07-28 14:00:00';

 

결과

+------+---------------------+
| id   | date                |
+------+---------------------+
|    3 | 2022-07-28 14:00:00 |
|    4 | 2022-07-29 15:00:00 |
|    5 | 2022-08-28 14:00:00 |
|    6 | 2023-07-28 14:00:00 |
+------+---------------------+

 

검색 조건에 지정한 날짜보다 미래인 데이터만 추출됐습니다.

 

날짜 범위 지정

조건문에 BETWEEN을 사용해 날짜 범위를 지정해 검색할 수 있습니다.

지정한 범위에 포함되는 데이터는 모두 출력됩니다.

SELECT *
FROM test
WHERE date BETWEEN '2022-07-01 00:00:00' AND '2022-07-31 23:59:59';

 

결과

+------+---------------------+
| id   | date                |
+------+---------------------+
|    1 | 2022-07-26 14:00:00 |
|    2 | 2022-07-27 13:00:00 |
|    3 | 2022-07-28 14:00:00 |
|    4 | 2022-07-29 15:00:00 |
+------+---------------------+

 

지정한 범위 내의 데이터가 모두 추출되었습니다.

반대로 지정한 범위에 해당하지 않는 데이터를 검색하고 싶은 경우에는 NOT BETWEEN을 사용합니다.

SELECT *
FROM test
WHERE date  NOT BETWEEN '2022-08-01 00:00:00' AND '2022-08-31 23:59:59';

 

결과

+------+---------------------+
| id   | date                |
+------+---------------------+
|    1 | 2022-07-26 14:00:00 |
|    2 | 2022-07-27 13:00:00 |
|    3 | 2022-07-28 14:00:00 |
|    4 | 2022-07-29 15:00:00 |
|    6 | 2023-07-28 14:00:00 |
+------+---------------------+

 

지정한 범위 내에 해당하지 않는 데이터만 추출되었습니다.

검색 조건문인 WHERE절에서 날짜를 지정해 검색하는 방법을 알아봤습니다.

댓글