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

MySQL BETWEEN 연산자로 학생 생년월일 기준 특정 나이 범위 레코드 조회하기

날짜 범위에 해당하는 레코드를 조회하려면 MySQL의 BETWEEN 연산자를 사용하면 됩니다. 이번 글에서는 학생의 생년월일을 저장한 뒤, 현재 나이가 특정 범위(예: 20~21세)에 해당하는 레코드만 추출하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 학생 생년월일을 저장할 테이블을 생성합니다.

mysql> create table DemoTable863(StudentDateOfBirth date);
Query OK, 0 rows affected (0.56 sec)

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable863 values('1998-01-10');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable863 values('2000-10-15');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable863 values('2003-04-20');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable863 values('2005-12-31');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable863 values('1999-07-01');
Query OK, 1 row affected (0.27 sec)

3. 전체 레코드 확인하기

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

mysql> select *from DemoTable863;

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

+--------------------+
| StudentDateOfBirth |
+--------------------+
| 1998-01-10         |
| 2000-10-15         |
| 2003-04-20         |
| 2005-12-31         |
| 1999-07-01         |
+--------------------+
5 rows in set (0.00 sec)

4. 나이 범위로 필터링하는 쿼리

생년월일(DOB)을 기준으로 현재 나이가 20세 이상 21세 이하인 학생만 조회하려면 YEAR() 함수로 출생 연도와 현재 연도의 차이를 계산한 후, 그 값에 BETWEEN 조건을 적용합니다.

mysql> select *from DemoTable863 where (YEAR(NOW()) - YEAR(StudentDateOfBirth)) BETWEEN 20 AND 21;

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

+--------------------+
| StudentDateOfBirth |
+--------------------+
| 1998-01-10         |
| 1999-07-01         |
+--------------------+
2 rows in set (0.03 sec)

참고 사항

위 방식은 연도 차이만 계산하므로, 생일이 아직 지나지 않은 경우 실제 만 나이보다 1살 많게 계산될 수 있습니다. 보다 정확한 나이 계산이 필요하다면 TIMESTAMPDIFF(YEAR, StudentDateOfBirth, NOW()) 함수를 사용하는 것이 좋습니다.