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

MySQL에서 특정 열의 값이 오늘 날짜인 레코드만 조회하는 방법

MySQL에서 datetime 타입의 컬럼 값이 오늘 날짜와 일치하는 레코드만 조회하고 싶다면, DATE(NOW()) 함수를 활용하면 됩니다. 아래는 기본적인 문법입니다.

select * from yourTableName where DATE(yourColumnName) = DATE(NOW());

예제 테이블 생성하기

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable706 (
    UserId varchar(100),
    UserName varchar(100),
    UserSignupDate datetime
);
Query OK, 0 rows affected (0.57 sec)

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

mysql> insert into DemoTable706 values('John1@gmail.com','John','2019-01-31 12:45:22');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable706 values('Chris123@gmail.com','Chris','2019-07-22 10:05:02');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable706 values('12Robert@gmail.com','Robert','2019-06-22 11:25:22');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable706 values('DavidM@gmail.com','David','2019-07-22 00:00:02');
Query OK, 1 row affected (0.12 sec)

저장된 데이터 확인하기

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

mysql> select *from DemoTable706;

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

+--------------------+----------+---------------------+
| UserId             | UserName | UserSignupDate      |
+--------------------+----------+---------------------+
| John1@gmail.com    | John     | 2019-01-31 12:45:22 |
| Chris123@gmail.com | Chris    | 2019-07-22 10:05:02 |
| 12Robert@gmail.com | Robert   | 2019-06-22 11:25:22 |
| DavidM@gmail.com   | David    | 2019-07-22 00:00:02 |
+--------------------+----------+---------------------+
4 rows in set (0.00 sec)

오늘 날짜에 해당하는 레코드 조회하기

이제 특정 컬럼(UserSignupDate)의 값이 현재 날짜와 일치하는 레코드만 가져오는 쿼리를 살펴보겠습니다.

mysql> select *from DemoTable706 where DATE(UserSignupDate)=DATE(NOW());

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

+--------------------+----------+---------------------+
| UserId             | UserName | UserSignupDate      |
+--------------------+----------+---------------------+
| Chris123@gmail.com | Chris    | 2019-07-22 10:05:02 |
| DavidM@gmail.com   | David    | 2019-07-22 00:00:02 |
+--------------------+----------+---------------------+
2 rows in set (0.00 sec)

동작 원리 설명

DATE(NOW()) 함수는 현재 시스템 시간에서 날짜 부분만 추출합니다. 마찬가지로 DATE(UserSignupDate)는 datetime 값에서 시간 정보를 제거하고 날짜만 반환합니다. 두 값을 비교하면 시간과 무관하게 같은 날짜인 레코드만 필터링할 수 있습니다.

예제에서는 가입일이 '2019-07-22'인 Chris와 David의 레코드 두 건만 조회된 것을 확인할 수 있습니다. 이처럼 일별 통계 집계, 당일 가입자 확인 등 다양한 상황에서 유용하게 활용할 수 있습니다.