SELECT ABS(extract(MONTH FROM to_timestamp('2002-12','YYYY-MM') - to_timestamp
('2002-01','YYYY-MM'))) AS wynik;
Pozdrawiam,
Piotrek L.
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
zwróć uwagę na to, że twoje zapytanie jest nielogiczne.
każesz mu najpierw policzyć *datę* w oparciu o rok i miesiąć. o.k. on ją
tworzy. odpowiednio 2002-12-01 00:00:00+01 i 2002-01-01 00:00:00+01.
świetnie. teraz odejmujesz.
wynik to 334 dni.
a teraz chcesz z tego wyciągnąć miesiąc.
jaki?
28 dniowy? 29 dniowy? 30 dniowy? 31 dniowy?
nie da się określić ile miesięcy minie w zadanej ilości dni.
jak chcesz robić takie coś to masz w zasadzie 2 opcje:
1. wynik (334 dni) podzielić przez 30, zaokrąglić i uznać za poprawny
2. napisać własną funkcję (np. plpgsql) która to policzy tak jak ty
chcesz.
depesz
--
hubert depesz lubaczewski http://www.depesz.pl/
------------------------------------------------------------------------
Mój Boże, spraw abym milczał, dopóki się nie upewnię, że naprawdę mam
coś do powiedzenia. (c) 1998 depesz
Chyba powinieneś zrobić:
SELECT ABS(
extract(MONTH FROM to_timestamp('2002-12','YYYY-MM'))
-
extract(MONTH FROM to_timestamp('2002-01','YYYY-MM'))
) AS wynik;
Albo napisać własną funkcję ...
----
Jan Słupicki
> Użytkownik <le...@e7.pl> napisał w wiadomości
> news:0855.000000...@newsgate.onet.pl...
>> Witam,
>> W jaki sposob mozna zaimplemetowac odejmowanie dwoch dat w formacie date
> albo
>> timestamp? Moje zapytanie nie zwraca mi dokladnie to czego oczekuje
> (roznice w
>> miesiacach):
>>
Czesc
Jesli juz to cos w tym stylu. Bedziesz mial odstęp podany w miesiacach
select
(extract(YEAR FROM '2002-12-01')*12+extract(MONTH FROM '2002-12-01'))
- (extract(YEAR FROM '2002-01-01')*12+extract(MONTH FROM '2002-01-
01'))
as wynik
Pozdrawiam