1

Temat: ilość miesięcy

Witam

Próbuję zrobić funkcję która wylicz różnicę miesięcy z dat.
taki ogólny przykład działa

SELECT EXTRACT(MONTH FROM TIMESTAMP '2001-06-16')-EXTRACT(MONTH FROM TIMESTAMP '2001-02-11');

Mam też taką funkcyjkę z internetu ale nie mogę dojść co ją boli

CREATE FUNCTION MONTHS_BETWEEN(DATE,DATE)
  RETURNS NUMERIC AS
'SELECT to_number((date($1)-date($2)),''999999999'')/31'
LANGUAGE 'sql';

dostaje taki błąd:

ERROR:  function to_number(integer, unknown) does not exist
LINE 1: ...THS_BETWEEN(DATE,DATE) RETURNS NUMERIC AS 'SELECT to_number(...
                                                                                                                   ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Zmiana na:

CREATE FUNCTION MONTHS_BETWEEN(DATE,DATE)
  RETURNS NUMERIC AS
'SELECT EXTRACT(MONTH FROM TIMESTAMP date($1))-EXTRACT(MONTH FROM TIMESTAMP date($1))'
LANGUAGE 'sql';

też nic nie pomaga.

Czy ktoś ma może jakiś przykład działającej funkcji lub wie co tu trzeba poprawić?

Z góry dzięki

2

Odp: ilość miesięcy

Powinno działać

postgres=# create function month_between(date,date) returns float as 'select abs(extract(year from age($1,$2))*12 + extract(month from age($1,$2))); ' language 'sql';
CREATE FUNCTION
postgres=# select month_between('03-03-2003','02-02-2002');
 month_between 
---------------
            13
(1 row)

postgres=# select month_between('01-01-2003','03-03-2004');
 month_between 
---------------
            14

3

Odp: ilość miesięcy

dzięki, działa

długo siedzisz w postgresql?

może masz jakieś namiary na ciekawe i proste przykłady do nauki, dokumentacja jakoś mi nie leży, najlepsze są przykłady dla opornych :-)

W ogóle zauważyłem, że nie ma za dużo postów na temat postgresql-a. Wnioskuję, że albo wszyscy wszystko wiedzą, albo nie jest to popularna baza. Dla mnie przewagą nad mysql jest to że postgres obsługuje role co jest super sprawą. Do tej pory działałem w Accessie i tam grupy ułatwiają zycie.

4

Odp: ilość miesięcy

5

Odp: ilość miesięcy

dzięki,
rzucę okiem na planet, nie byłem tam jeszcze