> 데이터 베이스 > MySQL 튜토리얼 > CONNECT BY, CROSS JOIN 또는 저장 프로시저를 사용하여 SQL에서 날짜 범위를 생성하는 방법은 무엇입니까?

CONNECT BY, CROSS JOIN 또는 저장 프로시저를 사용하여 SQL에서 날짜 범위를 생성하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-06 16:47:45
원래의
307명이 탐색했습니다.

How to Generate a Range of Dates in SQL Using CONNECT BY, CROSS JOIN, or Stored Procedures?

SQL을 사용하여 날짜 범위를 생성하는 방법

SQL 작업 시 여러 날짜에 걸쳐 쿼리를 실행해야 하는 경우가 많습니다. 작업할 날짜 목록이 미리 정의되어 있지 않으면 이는 어려울 수 있습니다. 다행히 SQL에서 날짜 범위를 생성하는 데 사용할 수 있는 몇 가지 기술이 있습니다.

일반적인 접근 방식 중 하나는 CONNECT BY 절을 사용하는 것입니다. 이 절을 사용하면 지정된 관계를 기반으로 일련의 행을 생성하는 계층적 쿼리를 생성할 수 있습니다. 예를 들어 다음 쿼리는 지난 365일 목록을 생성합니다.

SELECT TRUNC(SYSDATE - ROWNUM) dt
FROM DUAL CONNECT BY ROWNUM < 366
로그인 후 복사

이 쿼리는 현재 날짜(SYSDATE)로 시작한 다음 계층 구조의 각 행에 대해 하루를 뺍니다. ROWNUM 의사 열은 현재 행 번호를 추적하고 CONNECT BY 절은 365개의 행을 생성한 후 쿼리가 중지되도록 보장합니다.

날짜 범위를 생성하는 또 다른 옵션은 CROSS JOIN 연산자를 사용하는 것입니다. . 이 연산자를 사용하면 두 테이블에 일치하는 열이 없더라도 두 테이블을 단일 결과 집합으로 결합할 수 있습니다. 예를 들어, 다음 쿼리는 일과 시간의 가능한 모든 조합 목록을 생성합니다.

SELECT day, hour
FROM (
  SELECT LEVEL - 1 day
  FROM DUAL CONNECT BY LEVEL <= 365
)
CROSS JOIN (
  SELECT LEVEL - 1 hour
  FROM DUAL CONNECT BY LEVEL <= 24
)
로그인 후 복사

이 쿼리는 일 테이블(첫 번째 하위 쿼리)과 시간 테이블(두 번째 하위 쿼리)을 생성하는 것으로 시작됩니다. 하위 쿼리). 그런 다음 CROSS JOIN 연산자는 이 두 테이블을 단일 결과 집합으로 결합하여 가능한 모든 요일 및 시간 조합을 생성합니다.

마지막으로 저장 프로시저를 사용하여 날짜 범위를 생성할 수도 있습니다. 저장 프로시저는 데이터베이스에 저장되고 여러 번 실행될 수 있는 SQL 문 집합입니다. 다음 저장 프로시저는 지난 365일의 목록을 생성합니다.

CREATE PROCEDURE generate_dates AS
BEGIN
  FOR i IN 1 .. 365 LOOP
    INSERT INTO dates (dt) VALUES (TRUNC(SYSDATE - i));
  END LOOP;
END;
로그인 후 복사

이 저장 프로시저는 다음 문을 호출하여 실행할 수 있습니다.

EXECUTE generate_dates;
로그인 후 복사

저장 프로시저가 완료되면 실행되면 날짜 테이블을 사용하여 쿼리를 실행할 수 있습니다.

다음은 날짜 범위를 생성하는 데 사용할 수 있는 기술 중 일부에 불과합니다. SQL. 귀하에게 가장 적합한 접근 방식은 귀하의 애플리케이션의 특정 요구 사항에 따라 달라집니다.

위 내용은 CONNECT BY, CROSS JOIN 또는 저장 프로시저를 사용하여 SQL에서 날짜 범위를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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