MySQL에서 전체 날짜 값 대신 일(day) 부분만 추출하고 싶다면 DAYOFMONTH() 함수를 사용하면 됩니다. 이 함수는 DATETIME 또는 DATE 타입의 값에서 해당 월의 며칠인지를 숫자로 반환해 줍니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable747 (DueDate datetime);
Query OK, 0 rows affected (0.53 sec)
2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable747 values('2019-01-31');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable747 values('2018-12-01');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable747 values('2017-09-14');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable747 values('2016-07-21');
Query OK, 1 row affected (0.14 sec)3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable747;
실행 결과는 다음과 같습니다.
+---------------------+
| DueDate |
+---------------------+
| 2019-01-31 00:00:00 |
| 2018-12-01 00:00:00 |
| 2017-09-14 00:00:00 |
| 2016-07-21 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)
4. DAYOFMONTH() 함수로 일(day)만 추출하기
전체 날짜가 아닌 일(day)만 추출하려면 아래와 같이 DAYOFMONTH() 함수를 사용한 쿼리를 실행합니다.
mysql> select dayofmonth(DueDate) from DemoTable747;
실행 결과는 다음과 같습니다.
+---------------------+
| dayofmonth(DueDate) |
+---------------------+
| 31 |
| 1 |
| 14 |
| 21 |
+---------------------+
4 rows in set (0.00 sec)
참고: 유용한 관련 함수들
날짜 데이터를 다룰 때 함께 알아두면 좋은 함수들도 있습니다.
DAY():DAYOFMONTH()와 동일하게 일(day)을 반환하는 동의어입니다.YEAR(): 날짜에서 연도(year)를 추출합니다.MONTH(): 날짜에서 월(month)을 추출합니다.
이처럼 MySQL은 날짜 타입의 특정 부분만 손쉽게 추출할 수 있는 다양한 내장 함수를 제공하므로, 상황에 맞게 활용하면 쿼리 작성이 훨씬 간편해집니다.