[sql] 시간 범위 필터링 함수

이번 글에서는 SQL에서 시간 범위를 필터링하는 함수에 대해 알아보겠습니다.

1. DATEPART 함수

DATEPART 함수는 주어진 날짜나 시간값에서 특정 부분(년, 월, 일, 시간, 분, 초 등)을 추출하는 데 사용됩니다. 예를 들어, 아래의 쿼리는 주어진 날짜의 시간 부분을 추출합니다.

SELECT DATEPART(HOUR, order_date) AS order_hour
FROM orders
WHERE order_date BETWEEN '2022-01-01' AND '2022-12-31';

위의 쿼리는 orders 테이블에서 2022년에 주문된 시간을 추출합니다.

2. 시간 범위 필터링

SQL에서는 BETWEEN 연산자를 사용하여 시간 범위를 필터링할 수 있습니다. 아래의 쿼리는 특정 시간 범위 내의 주문을 추출합니다.

SELECT *
FROM orders
WHERE order_time BETWEEN '09:00:00' AND '17:00:00';

위의 쿼리는 orders 테이블에서 9시부터 17시까지의 주문을 추출합니다.

3. 시간 범위 함수

시간 범위를 자주 사용하는 경우, 사용자 정의 함수로 시간 범위 필터링 기능을 만들 수도 있습니다. 아래는 주문된 시간이 특정 범위 내에 있는지를 확인하는 사용자 정의 함수의 예시입니다.

CREATE FUNCTION fn_is_within_time_range (@startTime TIME, @endTime TIME, @checkTime TIME)
RETURNS BIT
AS
BEGIN
    DECLARE @result BIT
    IF @checkTime BETWEEN @startTime AND @endTime
        SET @result = 1
    ELSE
        SET @result = 0
    RETURN @result
END

위의 함수는 주문 시간이 주어진 시간 범위 내에 있는지를 확인하여 결과를 반환합니다.

마무리

이상으로 SQL에서 시간 범위를 필터링하는 함수에 대해 알아보았습니다. DATEPART 함수를 사용하여 시간을 추출하고, BETWEEN 연산자를 사용하여 시간 범위를 필터링하고, 필요에 따라 사용자 정의 함수를 만들어 시간 범위 필터링을 확장할 수 있습니다.

참고 자료