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

서로 다른 열에 저장된 두 날짜 사이의 일수를 계산하는 MySQL 쿼리

두 날짜 사이의 일수 계산하기

MySQL에서 서로 다른 열에 저장되어 있는 두 날짜 값 사이의 일수를 구하려면 DATEDIFF() 함수를 사용하면 됩니다. 이 함수는 첫 번째 인자의 날짜에서 두 번째 인자의 날짜를 뺀 결과를 일(day) 단위로 반환합니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1471
    -> (
    -> EmployeeJoiningDate date,
    -> EmployeeRelievingDate date
    -> );
Query OK, 0 rows affected (0.57 sec)

직원 입사일(EmployeeJoiningDate)과 퇴사일(EmployeeRelievingDate) 두 개의 DATE 타입 열로 구성된 테이블입니다. 이제 insert 명령으로 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable1471 values('2018-06-21','2018-12-21');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1471 values('2017-01-19','2019-01-31');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1471 values('2015-12-31','2016-03-01');
Query OK, 1 row affected (0.11 sec)

select 문을 사용하여 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select * from DemoTable1471;

위 쿼리는 다음과 같은 결과를 출력합니다.

+---------------------+-----------------------+
| EmployeeJoiningDate | EmployeeRelievingDate |
+---------------------+-----------------------+
| 2018-06-21          |          2018-12-21  |
| 2017-01-19          |          2019-01-31  |
| 2015-12-31          |          2016-03-01  |
+---------------------+-----------------------+
3 rows in set (0.00 sec)

DATEDIFF 함수로 근무 일수 계산하기

이제 두 날짜 사이의 일수를 계산하는 쿼리를 작성해 보겠습니다. DATEDIFF() 함수의 첫 번째 인자에는 종료일인 EmployeeRelievingDate를, 두 번째 인자에는 시작일인 EmployeeJoiningDate를 순서대로 전달합니다.

mysql> select datediff(EmployeeRelievingDate,EmployeeJoiningDate) as EmployeeWorkDays from DemoTable1471;

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

+------------------+
| EmployeeWorkDays |
+------------------+
|              183 |
|              742 |
|               61 |
+------------------+
3 rows in set (0.00 sec)

결과를 살펴보면 각 직원별 근무 일수가 정상적으로 계산된 것을 확인할 수 있습니다. 참고로 DATEDIFF() 함수는 시간 값은 무시하고 날짜 부분만 비교하므로, 두 날짜의 순서를 반대로 지정하면 음수가 반환됩니다. 따라서 시작일과 종료일의 인자 순서를 항상 주의해서 작성해야 합니다.