> 데이터 베이스 > MySQL 튜토리얼 > SQL Server에서 날짜 범위를 효율적으로 검색하는 방법은 무엇입니까?

SQL Server에서 날짜 범위를 효율적으로 검색하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-12 11:22:42
원래의
357명이 탐색했습니다.

How to Efficiently Retrieve a Date Range in SQL Server?

SQL Server에서 특정 두 날짜 사이의 모든 날짜를 검색합니다

요구사항

목표는 시작 날짜부터 종료 날짜까지 지정된 범위에 있는 모든 날짜의 전체 목록을 얻는 것입니다. 이 정보는 후속 처리를 위해 커서에 저장됩니다.

도전

이 작업을 수행하기 위해 재귀 공통 테이블 표현식(CTE)을 사용하는 쿼리가 구현됩니다.

<code class="language-sql">;with GetDates As (
    select DATEADD(day,1,@maxDate) as TheDate
    UNION ALL
    select DATEADD(day,1, TheDate) from GetDates
    where TheDate < @minDate
)
SELECT TheDate FROM GetDates</code>
로그인 후 복사

그러나 CTE 결과로 커서를 채우는 동안 오류가 발생했습니다.

<code class="language-sql">SET @DateCurSor = CURSOR FOR
SELECT TheDate
FROM GetDates</code>
로그인 후 복사

오류 메시지에는 "SET" 키워드 근처에 구문 오류가 있음이 명시되어 있습니다.

솔루션

또 다른 방법으로 달력을 활용하는 것도 추천합니다. 달력 테이블이 존재하지 않는 경우에도 쉽게 생성할 수 있습니다. 이 테이블은 날짜를 표 형식으로 표현하여 검색 프로세스를 크게 단순화합니다.

<code class="language-sql">DECLARE @MinDate DATE = '20140101',
        @MaxDate DATE = '20140106';

SELECT Date
FROM dbo.Calendar
WHERE Date >= @MinDate
AND Date <= @MaxDate;</code>
로그인 후 복사

캘린더 테이블이 없는 경우 시스템 테이블 sys.all_objects와 관련된 간단한 절차가 제공됩니다.

<code class="language-sql">DECLARE @MinDate DATE = '20140101',
        @MaxDate DATE = '20140106';

SELECT TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1)
        Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, @MinDate)
FROM sys.all_objects a
CROSS JOIN sys.all_objects b;</code>
로그인 후 복사

커서 사용을 피하세요

SQL Server에서는 커서를 사용하는 것이 일반적으로 권장되지 않습니다. 대조적으로, 집합 기반 연산은 뛰어난 성능으로 인해 더 많이 사용됩니다. 설명된 시나리오에서는 커서를 사용하지 않고도 특정 날짜에 특정 항목의 수량을 결정하는 작업을 수행할 수 있습니다.

<code class="language-sql">SELECT TOP 1 date, it_cd, qty 
FROM T
WHERE it_cd = 'i-1'
AND Date BETWEEN @MinDate AND @MaxDate;</code>
로그인 후 복사

위 내용은 SQL Server에서 날짜 범위를 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿