Generating dates prior to generate_series

Поиск
Список
Период
Сортировка
От Roger Tannous
Тема Generating dates prior to generate_series
Дата
Msg-id 580286.82124.qm@web90602.mail.mud.yahoo.com
обсуждение исходный текст
Ответы Re: Generating dates prior to generate_series
Список pgsql-sql
I'm using PostgreSQL version 7.3.2, and generate_series() is not
available, so this is a function to generate a series dates.

The function goes backwards if the second argument is less than the first
one. Check the two select statements at the end.

Best Regards, 
Roger Tannous.

CREATE FUNCTION date_range(VARCHAR, VARCHAR) RETURNS SETOF DATE AS '
  DECLARE
       dateStart ALIAS FOR $1;
       dateEnd ALIAS FOR $2;
                       
                       forwardSteps BOOLEAN := true;
                       
                       tmpDate DATE;
                       
  BEGIN
                       IF (to_date(dateStart, ''YYYY-mm-dd'') >
to_date(dateEnd, ''YYYY-mm-dd'')) THEN
                                   
                                   forwardSteps := false;
                                   
                       END IF;
                       
                       tmpDate := to_date(dateStart, ''YYYY-mm-dd'');
                       
                       WHILE ((forwardSteps AND tmpDate <=
to_date(dateEnd, ''YYYY-mm-dd'')) OR (NOT forwardSteps AND tmpDate >=
to_date(dateEnd, ''YYYY-mm-dd''))) LOOP
                   
                                   RETURN NEXT tmpDate;
                                   
                                   IF forwardSteps THEN 
                                   
                                               tmpDate := tmpDate +
interval ''1 day'';
                                   
                                   ELSE
                                   
                                               tmpDate := tmpDate -
interval ''1 day'';
                                   
                                   END IF;

                       END LOOP;
                       RETURN;
  END;

' LANGUAGE 'plpgsql';



select * FROM date_range('2007-01-03', '2007-03-20');

select * FROM date_range('2007-04-03', '2007-03-20');


____________________________________________________________________________________
Looking for earth-friendly autos? 
Browse Top Cars by "Green Rating" at Yahoo! Autos' Green Center.
http://autos.yahoo.com/green_center/


В списке pgsql-sql по дате отправления:

Предыдущее
От: Paul Lambert
Дата:
Сообщение: Moving a simple function to pl/pgsql (Novice question)
Следующее
От:
Дата:
Сообщение: CPU statistics