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 중국어 웹사이트의 기타 관련 기사를 참조하세요!