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

MySQL에서 현재 날짜와 시간이 입사일과 퇴사일 사이에 있는 레코드 조회하기

MySQL에서 BETWEEN 연산자를 사용하면 특정 날짜가 시작일과 종료일 사이에 있는 레코드를 손쉽게 조회할 수 있습니다. 여기에 NOW() 함수를 함께 사용하면 현재 날짜와 시간을 기준으로 비교할 수 있습니다.

이 글에서는 입사일(Joiningdate)과 퇴사일(Relievingdate) 사이에 현재 시점이 포함되어 있는 직원 레코드를 찾는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제로 사용할 테이블을 생성합니다. 두 개의 DATETIME 타입 컬럼을 가진 간단한 구조입니다.

mysql> create table DemoTable771 (
   Joiningdate datetime,
   Relievingdate datetime
);
Query OK, 0 rows affected (1.15 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable771 values('2016-01-21','2016-09-23');
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable771 values('2019-01-21','2019-09-23');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable771 values('2017-04-01','2018-12-31');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable771 values('2019-04-01','2019-12-31');
Query OK, 1 row affected (0.25 sec)

3. 전체 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable771;

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

+---------------------+---------------------+
| Joiningdate         | Relievingdate       |
+---------------------+---------------------+
| 2016-01-21 00:00:00 | 2016-09-23 00:00:00 |
| 2019-01-21 00:00:00 | 2019-09-23 00:00:00 |
| 2017-04-01 00:00:00 | 2018-12-31 00:00:00 |
| 2019-04-01 00:00:00 | 2019-12-31 00:00:00 |
+---------------------+---------------------+
4 rows in set (0.00 sec)

4. BETWEEN과 NOW()로 조건 조회하기

다음은 NOW() 함수가 반환하는 현재 날짜와 시간이 입사일과 퇴사일 사이에 존재하는 레코드만 필터링하는 MySQL 쿼리입니다.

mysql> select *from DemoTable771 where NOW() between Joiningdate and Relievingdate;

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

+---------------------+---------------------+
| Joiningdate         | Relievingdate       |
+---------------------+---------------------+
| 2019-01-21 00:00:00 | 2019-09-23 00:00:00 |
| 2019-04-01 00:00:00 | 2019-12-31 00:00:00 |
+---------------------+---------------------+
2 rows in set (0.07 sec)

결과를 보면 전체 4개의 레코드 중 현재 시점이 재직 기간에 해당하는 2개의 레코드만 반환된 것을 확인할 수 있습니다. 이처럼 BETWEEN 연산자와 NOW() 함수를 조합하면 재직 중인 직원 조회, 유효 기간이 남아 있는 항목 필터링 등 다양한 실무 상황에서 유용하게 활용할 수 있습니다.