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

MySQL에서 현재 날짜부터 이번 달 마지막 날까지의 레코드 조회 방법

MySQL에서 오늘 날짜(CURDATE())부터 이번 달의 마지막 날(LAST_DAY()) 사이에 해당하는 레코드만 조회하는 방법을 알아보겠습니다. 핵심은 BETWEEN 연산자와 함께 CURDATE(), LAST_DAY() 함수를 사용하는 것입니다.

1. 테이블 생성하기

먼저 예제로 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    BookingDate date
);
Query OK, 0 rows affected (0.67 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 여러 날짜 데이터를 입력합니다.

mysql> insert into DemoTable values('2019-09-21');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('2018-09-10');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('2019-09-10');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2019-09-08');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2016-09-18');
Query OK, 1 row affected (0.17 sec)

3. 전체 레코드 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

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

+-------------+
| BookingDate |
+-------------+
| 2019-09-21  |
| 2018-09-10  |
| 2019-09-10  |
| 2019-09-08  |
| 2016-09-18  |
+-------------+
5 rows in set (0.00 sec)

4. 현재 날짜부터 이번 달 말일까지 조회하기

다음 쿼리가 오늘 날짜부터 이번 달의 나머지 기간에 해당하는 레코드를 가져오는 핵심 쿼리입니다.

mysql> select *from DemoTable where BookingDate between curdate() and last_day(curdate());

각 함수의 역할은 다음과 같습니다.

  • CURDATE(): 현재 시스템 날짜를 반환합니다.
  • LAST_DAY(curdate()): 현재 날짜가 속한 달의 마지막 날짜를 반환합니다.

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

+-------------+
| BookingDate |
+-------------+
| 2019-09-21  |
| 2019-09-10  |
| 2019-09-08  |
+-------------+
3 rows in set (0.01 sec)

결과를 보면 현재 날짜(예: 2019-09-08)와 같거나 이후이면서, 이번 달(9월)의 마지막 날 이전인 레코드만 필터링되어 반환된 것을 확인할 수 있습니다. 과거 연도의 데이터(2018년, 2016년)는 자동으로 제외됩니다.

정리

이처럼 BETWEEN curdate() AND last_day(curdate()) 패턴을 활용하면 별도의 날짜 계산 없이 간단하게 "오늘부터 월말까지"의 데이터를 조회할 수 있습니다. 예약 시스템이나 일정 관리 기능에서 이번 달 남은 예약 내역을 확인할 때 특히 유용하게 사용할 수 있습니다.