MySQL에서 두 날짜 비교

Sweety Rupani 2023년1월30일
  1. 테이블 생성 및 값 삽입
  2. WHERE 절을 사용하여 두 날짜 비교
  3. BETWEEN 연산자를 사용하여 두 날짜 비교
  4. DATE_ADD 함수를 사용하여 두 날짜 비교
MySQL에서 두 날짜 비교

이 기사에서는 MySQL에서 두 날짜를 비교하는 방법을 설명합니다. 이 작업을 수행하는 세 가지 다른 접근 방식이 있습니다.

  1. WHERE 절 사용
  2. BETWEEN 연산자 사용
  3. DATE_ADD 기능 사용

테이블 생성 및 값 삽입

먼저 직원용 테이블을 다음과 같이 생성합니다.

Create table employee (empid int primary key, fname varchar(10), lname varchar(20), logindate timestamp not null default CURRENT_TIMESTAMP); 

이제 데모를 위해 테이블에 몇 가지 값을 삽입하겠습니다.

INSERT INTO employee('empid', 'fname', 'lname')VALUES (1,'aaa','bbb'); 

INSERT INTO employee VALUES 
(201,'Peter','Parker','2001-01-01 16:15:00'), 
(202,'Thor','Odinson','2021-08-02 12:15:00'), 
(204,'Loki','Laufeyson','2009-08-03 10:43:24'); 

WHERE 절을 사용하여 두 날짜 비교

아래 쿼리는 주어진 날짜 범위 사이의 모든 레코드를 추출하는 SELECT 쿼리를 사용하는 매우 간단한 접근 방식입니다.

SELECT * FROM employee WHERE logindate >= '2000-07-05' AND logindate < '2011-11-10'; 

mysql에서 두 날짜 비교 - where 절 사용

BETWEEN 연산자를 사용하여 두 날짜 비교

먼저 MySQL에서 날짜를 문자열로 변환해야 합니다. 이 작업을 수행하기 위해 DATE 함수를 사용하여 Datetime에서 날짜를 추출합니다.

DATE 함수의 구문은 다음과 같습니다.

DATE(column name)

logindate 열의 인덱스를 활용하려면 대신 이것을 시도할 수 있습니다. 사이 연산자는 지정된 두 날짜 표현식 사이에 날짜 열이 있는 모든 레코드를 선택하는 데 사용할 수도 있습니다.

SELECT * FROM employee WHERE DATE(logindate) BETWEEN '2000-07-05' AND '2011-11-10'; 

mysql에서 두 날짜 비교 - 사이 사용

MySQL은 하나의 yyyy-mm-dd 날짜 형식만 허용하므로 문자열 날짜 표현식의 형식을 지정해야 할 때마다 이 형식을 사용해야 합니다.

이제 비교하여 DATE() 함수의 필요성에 대한 쿼리가 있을 수 있습니다.

따라서 MySQL DATE() 함수는 DATETIME 또는 TIMESTAMP 열의 날짜 부분을 아래와 같이 문자열로 추출합니다.

mysql> SELECT DATE('2005-08-28 01:02:03'); -> '2005-08-28' 

DATE() 함수는 MySQL이 비교를 위해 열 값의 날짜 부분만 고려하도록 사용됩니다. DATE() 함수를 사용하지 않으면 MySQL은 열의 시간 부분을 문자열 표현식과 비교합니다. 이 옵션을 사용하면 모든 비교에 지정된 문자열 표현식이 결과 집합의 일부로 포함됩니다.

위의 쿼리에서와 같이 DATETIME 또는 TIME-STAMP 열을 날짜를 나타내는 문자열과 비교할 때 MySQL은 비교를 위해 열 및 표현식 값을 모두 긴 정수 유형으로 변환합니다.

날짜 열을 문자열과 비교하더라도 날짜 열 값을 문자열로 수동으로 변환할 필요가 없기 때문입니다.

DATE_ADD 함수를 사용하여 두 날짜 비교

또 다른 접근 방식은 DATE_ADD() 함수를 사용하는 것입니다. 그러나 이 접근 방식에는 DATE_ADD() 함수가 반드시 필요한 것은 아닙니다. 그러나 원하는 날짜 이후 몇 분을 솔루션의 일부로 고려하고 싶다면 이것을 사용할 수 있습니다. 예를 들어, 지정된 날짜 범위 사이의 모든 레코드를 원하지만 지정된 제한 후 15분 후에 삽입된 레코드를 고려할 수 있는 경우입니다. 이 기능은 매우 유용합니다.

DATE_ADD() 함수는 지정된 날짜에 지정된 시간 또는 날짜 간격을 추가한 다음 날짜를 반환하는 데 사용됩니다. DATE_ADD 함수는 두 개의 매개변수를 사용합니다. 첫 번째 매개변수는 날짜이고 두 번째 매개변수는 추가할 간격입니다.

select * from employee 
where logindate between '2000-07-05' and DATE_ADD('2011-07-10',INTERVAL 15 MINUTE); 

mysql에서 두 날짜 비교 - 날짜 추가 사용