SQL) '기간'으로 WHERE 조건 부여하기

Songss·2024년 12월 13일

DBMS

목록 보기
11/20

WHERE 조건을 기간으로 설정하면 쿼리문은 어떻게 작성 할까 ?

SQL에서 기간별 조건을 적용하려면 WHERE에 날짜 및 시간 필드를 사용하여 조건을 작성할 수 있습니다. 데이터베이스에서의 날짜와 시간 처리 방식에 따라 다양한 연산자를 활용할 수 있습니다.

다음은 몇 가지 일반적인 예제와 패턴입니다:


1. 특정 기간 내 데이터를 선택

SELECT *
FROM orders
WHERE order_date BETWEEN '2024-12-01' AND '2024-12-10';
  • BETWEEN 연산자를 사용하여 시작 날짜(2024-12-01)와 종료 날짜(2024-12-10) 사이의 데이터를 필터링합니다.

2. 특정 시작 날짜 이후 데이터

SELECT *
FROM orders
WHERE order_date >= '2024-12-01';
  • >=를 사용하여 특정 날짜 이후의 데이터를 선택합니다.

3. 특정 종료 날짜 이전 데이터

SELECT *
FROM orders
WHERE order_date <= '2024-12-10';
  • <=를 사용하여 특정 날짜 이전의 데이터를 선택합니다.

4. 지난 7일간의 데이터

SELECT *
FROM orders
WHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);
  • DATE_SUBCURDATE()를 사용하여 현재 날짜로부터 7일 전부터의 데이터를 선택합니다.

5. 이번 달 데이터

SELECT *
FROM orders
WHERE MONTH(order_date) = MONTH(CURDATE())
  AND YEAR(order_date) = YEAR(CURDATE());
  • 현재 월(CURDATE()를 기준) 데이터를 필터링합니다.

6. 올해 데이터

SELECT *
FROM orders
WHERE YEAR(order_date) = YEAR(CURDATE());
  • 현재 연도의 데이터를 필터링합니다.

7. 사용자 입력에 따라 기간 필터

사용자가 시작 날짜와 종료 날짜를 입력한다고 가정하고, 이를 동적으로 조건에 추가할 수 있습니다:

SELECT *
FROM orders
WHERE order_date BETWEEN :start_date AND :end_date;
  • :start_date:end_date는 쿼리 실행 시 바인딩되는 값입니다.
  • 예를 들어, Python의 cursor.execute를 사용할 경우:
    cursor.execute("SELECT * FROM orders WHERE order_date BETWEEN %s AND %s", (start_date, end_date))

8. 시간까지 포함한 조건

날짜와 시간을 동시에 필터링하려면 DATETIME 형식을 사용합니다:

SELECT *
FROM logs
WHERE log_time BETWEEN '2024-12-01 08:00:00' AND '2024-12-01 18:00:00';

9. 특정 요일 조건

주중 또는 특정 요일 데이터를 선택하려면 DAYOFWEEK을 사용합니다:

SELECT *
FROM orders
WHERE DAYOFWEEK(order_date) = 2; -- 월요일 (1=일요일, 2=월요일, ...

필요에 따라 위 조건을 조합하여 복잡한 기간 조건을 만들 수 있습니다. 예를 들어, 특정 시간대에 발생한 지난 30일간의 데이터를 조회하려면:

SELECT *
FROM logs
WHERE log_time BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW()
  AND TIME(log_time) BETWEEN '08:00:00' AND '18:00:00';

0개의 댓글