SQL Server에서 이전 달의 레코드를 검색하는 방법
타임스탬프 필드가 포함된 데이터베이스 테이블로 작업할 때 종종 필요한 경우가 있습니다. 지난달 등 특정 기간의 기록을 검색합니다. SQL Server는 이를 달성하기 위한 다양한 방법을 제공합니다.
문제:
레코드가 속한 멤버 테이블에서 date_created 열을 기반으로 레코드를 추출해야 합니다. 지난달. 예를 들어 현재 날짜가 2010년 1월 3일인 경우 2009년 12월 1일부터 2009년 12월 31일까지의 레코드를 검색해야 합니다.
과제:
일부 기존 솔루션에서는 인덱스를 무시하거나 의도한 범위를 벗어난 데이터를 선택하는 문제가 발생합니다. 범위.
올바른 접근 방식:
이러한 함정을 피하기 위해 권장되는 접근 방식은 불평등 비교를 활용하여 정확한 데이터 검색을 보장합니다. 수정된 쿼리는 다음과 같습니다.
DECLARE @startOfCurrentMonth DATETIME SET @startOfCurrentMonth = DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0) SELECT * FROM Member WHERE date_created >= DATEADD(month, -1, @startOfCurrentMonth) AND date_created < @startOfCurrentMonth
이 방법은 이번 달의 시작을 계산하고 불평등 비교를 사용하여 이전 달의 기록만 포함합니다. 인덱스를 사용하고 불필요한 비교를 방지함으로써 이 접근 방식은 효율적이고 정확한 결과를 제공합니다.
위 내용은 SQL Server에서 지난 달의 기록을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!