MySQL에서 datetime 열로부터 날짜를 추출할 때는 date() 함수와 함께 trim() 함수를 사용할 수 있습니다. 특히 저장된 값에 불필요한 공백이 포함되어 있을 경우, trim()을 활용하면 공백을 제거한 상태로 정확하게 비교할 수 있습니다.
예제 테이블 생성
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable661(Duedate datetime); Query OK, 0 rows affected (0.57 sec)
다음으로 insert 명령어를 사용해 몇 개의 레코드를 삽입합니다. 이때 일부 값에는 앞뒤 공백이 포함되어 있다는 점에 주목하세요.
mysql> insert into DemoTable661 values(' 2019-01-21 12:02:21');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable661 values(' 2019-07-11 11:55:59 ');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable661 values('2019-11-21 04:00:59 ');
Query OK, 1 row affected (0.10 sec)저장된 데이터 확인
select 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable661;
위 쿼리는 다음과 같은 결과를 출력합니다.
+---------------------+ | Duedate | +---------------------+ | 2019-01-21 12:02:21 | | 2019-07-11 11:55:59 | | 2019-11-21 04:00:59 | +---------------------+ 3 rows in set (0.00 sec)
날짜 추출 및 비교 쿼리
이제 datetime 열에서 특정 날짜를 기준으로 데이터를 추출하는 쿼리를 살펴보겠습니다. 아래 쿼리는 date() 함수로 시간 정보를 제외한 날짜 부분만 가져오고, trim() 함수로 공백을 제거한 뒤 원하는 날짜와 비교합니다.
mysql> select *from DemoTable661 where trim(date(Duedate))='2019-07-11';
실행 결과는 다음과 같습니다.
+---------------------+ | Duedate | +---------------------+ | 2019-07-11 11:55:59 | +---------------------+ 1 row in set (0.00 sec)
결과를 보면 '2019-07-11' 날짜에 해당하는 레코드 하나만 정확히 반환된 것을 확인할 수 있습니다. 이처럼 date()와 trim()을 조합하면 datetime 값에 공백이 포함되어 있더라도 날짜 기준으로 안정적으로 데이터를 조회할 수 있습니다.