날짜 범위를 찾을 때 어쨌든 generate_series
에 시작일과 종료일도 반환합니까? generate_series 쿼리에 열을 추가하는 방법
select
'2014-06-05 00:00:00'::timestamp + ('1 month'::INTERVAL * s.a) AS date
from
generate_series(1, cast(extract(month from age('2014-09-05'::date, '2014-06-05'::date)) AS integer), 1) as s(a);
이 괜찮
date
2014-07-05 00:00:00
2014-08-05 00:00:00
2014-09-05 00:00:00
는, 그러나 나는 이유의 존재가 내가 다른 테이블에서 여러 시작/끝 쌍을 추출하고 있다는 점이다
start_date end_date date
2014-06-05 2014-09-05 2014-07-05 00:00:00
2014-06-05 2014-09-05 2014-08-05 00:00:00
2014-06-05 2014-09-05 2014-09-05 00:00:00
하고 싶은이 출력을 제공합니다 그러나 그것들을 결합시키는 방법을 이해할 수는 없습니다. 또한 PostgeSQL 버전 8.2.15를 사용하고 있습니다 (그러므로 더 복잡한 generate_series
기능).
이 문제를 주요 문제로 확장하려면 이러한 시작 및 종료 시간 쌍이 포함 된 표가 있습니다.
start_date end_date
2014-08-25 00:00:00 2014-09-25 00:00:00
2014-05-16 00:00:00 2014-08-16 00:00:00
2014-09-09 00:00:00 2014-12-09 00:00:00
2014-06-05 00:00:00 2014-07-05 00:00:00
2014-05-19 00:00:00 2014-08-19 00:00:00
2014-05-15 00:00:00 2014-07-15 00:00:00
2014-09-04 00:00:00 2014-11-04 00:00:00
어떻게이 테이블을 반복하고 확장 된 기간과 결합 할 수 있습니까?
없이
쿼리의 일부, 나는 당신을 믿고있어 실제 문제는이 쿼리를 어딘가에 생성하고 해당 값을 한 번만 입력하려는 것입니다. 하지만 이미 쿼리에서 시작 날짜를 두 번 언급하고 있습니다 ... – IMSoP
@IMSoP 예, 다른 테이블에서 시작 (2014-06-05) 및 종료 (2014-09-05) 값을 얻고 있습니다. 나는 단순한 예제를 제공하는 것이 내가 그 일을 성취 할 수 없을 때 가장 도움이 될 것이라고 생각했다. – cdeterman
이 경우에는 지나치게 단순화했습니다. 정확한 시나리오는 간단합니다. 'Choose'2014-09-05 :: date as start_date, '2014-06-05':: date as end_date , '2014-06-05 00:00:00':: timestamp + ('1 개월':: INTERVAL * sa) AS 날짜 ... '이 정보를 Google에 어떻게 결합할지 표시해야합니다. 다른 테이블 또는 최소한 입력 데이터에 대한 추가 정보를 제공하십시오. – IMSoP