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의 레코드 두 건만 조회된 것을 확인할 수 있습니다. 이처럼 일별 통계 집계, 당일 가입자 확인 등 다양한 상황에서 유용하게 활용할 수 있습니다.