>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 주어진 두 날짜 사이에 일련의 날짜를 생성하는 방법은 무엇입니까?

SQL Server에서 주어진 두 날짜 사이에 일련의 날짜를 생성하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-15 09:07:43187검색

How to Generate a Series of Dates Between Two Given Dates in SQL Server?

SQL Server에서 날짜 범위 생성

SQL Server에서는 여러 가지 방법을 사용하여 테이블에 지정된 두 날짜 사이의 날짜 범위를 채우는 작업을 단순화할 수 있습니다. 효율적인 방법은 숫자 테이블이나 계산 테이블을 사용하여 일련의 정수를 생성하는 것입니다.

'2011-09-01'과 '2011-10-10' 사이의 날짜로 테이블을 채우라는 요청에 따라 다음 솔루션을 구현할 수 있습니다.

<code class="language-sql">DECLARE @StartDate DATE = '20110901'
, @EndDate DATE = '20111010'

SELECT  DATEADD(DAY, nbr - 1, @StartDate)
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS nbr
          FROM      sys.columns c
        ) nbrs
WHERE   nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)</code>

이 코드는 1부터 시작 날짜와 종료 날짜 사이의 차이까지의 정수 목록을 생성합니다. 각 정수에서 1을 빼고 시작 날짜에 더하면 '2011-09-01'로 시작하고 '2011-10-10'으로 끝나는 날짜 테이블이 생성됩니다.

또는 0부터 시작하는 계산표를 사용하여 계산을 단순화할 수도 있습니다.

<code class="language-sql">CREATE TABLE [dbo].[nbrs](
    [nbr] [INT] NOT NULL
) ON [PRIMARY]

INSERT INTO dbo.nbrs (nbr)
SELECT nbr-1
FROM ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS nbr
          FROM      sys.columns c
        ) nbrs

DECLARE @StartDate DATE = '20110901'
      , @EndDate DATE = '20111010'

SELECT  DATEADD(DAY, nbr, @StartDate)
FROM    nbrs
WHERE   nbr <= DATEDIFF(DAY, @StartDate, @EndDate)</code>

데이터베이스에 숫자 테이블을 영구적으로 저장하면 향후 쿼리에 다시 사용할 수 있으므로 하위 쿼리와 재귀가 필요하지 않아 성능과 효율성이 보장됩니다.

위 내용은 SQL Server에서 주어진 두 날짜 사이에 일련의 날짜를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.