[firebird] Czym =?ISO-8859-2?Q?zast=B1pi=E6_postgresowy_inte?==?ISO-8859-2?Q?rval_=3F?=
Ronald Kuczek - 04-01-2007 14:10
[firebird] Czym =?ISO-8859-2?Q?zast=B1pi=E6_postgresowy_inte?==?ISO-8859-2?Q?rval_=3F?=
Cześć,
Mam obecnie na tapecie kilka funkcji do przepisania z plpgsql-a do firebirda i utkwiłem właśnie na nieszczęsnym interval. W Firebirdzie nie ma, nie widzę też w dokumentacji żadnego zamiennika. Jakieś sugestie ?
Pozdrawiam Rony
Paweł - 04-01-2007 14:10
> Mam obecnie na tapecie kilka funkcji do przepisania z plpgsql-a do > firebirda i utkwiłem właśnie na nieszczęsnym interval. > W Firebirdzie nie ma, nie widzę też w dokumentacji żadnego zamiennika.
Hmmm, zamiennik to chyba numeric(18,9) - w dniach oczywiście Tego typu rezultat zwraca np różnica timestamp'ow
pozdr
Ronald Kuczek - 04-01-2007 14:10
Paweł napisał(a): > Hmmm, zamiennik to chyba numeric(18,9) - w dniach oczywiście > Tego typu rezultat zwraca np różnica timestamp'ow >
Ale co dalej. W Postgresie użytkownik daje mi zadanie typu: "daj mi wszystkie płatności przeterminowane powyżej 14 dni", no to proste w SQL daje "where termin_platnosci<=current_date-interval 'x days' " i dostaję pożądany wynik. Jak coś takiego uzyskać w Firebirdzie ?
Pozdrawiam Rony
sg - 04-01-2007 14:10
Dnia 04-01-2007 o 10:09:45 Ronald Kuczek <kuczek@kuczek.pl> napisał(a):
> Paweł napisał(a): >> Hmmm, zamiennik to chyba numeric(18,9) - w dniach oczywiście >> Tego typu rezultat zwraca np różnica timestamp'ow >> > > Ale co dalej. W Postgresie użytkownik daje mi zadanie typu: "daj mi > wszystkie płatności przeterminowane powyżej 14 dni", > no to proste w SQL daje "where termin_platnosci<=current_date-interval > 'x days' " i dostaję pożądany wynik. Jak coś takiego uzyskać w > Firebirdzie ? > > Pozdrawiam > Rony
nie pamiętam dokładnie, ale tam jest chyba funkcja zwracając aktualną datę... aha pisze się tak śmiesznie 'NOW':
where termin_platnosci <= 'NOW' - 14
albo jakoś tak
Paweł - 04-01-2007 14:10
> Ale co dalej. W Postgresie użytkownik daje mi zadanie typu: "daj mi > wszystkie płatności przeterminowane powyżej 14 dni", > no to proste w SQL daje "where termin_platnosci<=current_date-interval 'x > days' " i dostaję pożądany wynik. Jak coś takiego uzyskać w Firebirdzie ?
Praktycznie tak jak napisałeś - w przypadku (całych) 14 dni będzie "where termin_platnosci<=current_date - 14"
Jak odcinek czasu masz bardziej skomplikowany to pozostaje Ci naskrobać ręcznie jakaś prostą funkcje w stylu "days *1 + hours*1/24 + itd..." (albo znaleźć coś np. w FreeAdhocUDF)
Być może więcej doczytasz tutaj (FB chyba nie ma dramatycznych różnic wzgledem IB6) http://www.ibphoenix.com/main.nfs?a=...60_sql_date_fs
pozdr
mielmar - 04-01-2007 14:10
Ronald Kuczek napisał(a): > Paweł napisał(a): >> Hmmm, zamiennik to chyba numeric(18,9) - w dniach oczywiście >> Tego typu rezultat zwraca np różnica timestamp'ow >> > > Ale co dalej. W Postgresie użytkownik daje mi zadanie typu: "daj mi > wszystkie płatności przeterminowane powyżej 14 dni", > no to proste w SQL daje "where termin_platnosci<=current_date-interval > 'x days' " i dostaję pożądany wynik. Jak coś takiego uzyskać w > Firebirdzie ? > > Pozdrawiam > Rony może tak :
where termin_platnosci <= cast('NOW' as date) - 14
Ronald Kuczek - 06-01-2007 00:02
sg napisał(a): > nie pamiętam dokładnie, ale tam jest chyba funkcja zwracając aktualną > datę... aha pisze się tak śmiesznie 'NOW': > > where termin_platnosci <= 'NOW' - 14 >
Dziękuję wszystkim. BTW. jesteś sprawdziłeś to rozwiązanie ? Z tego co pamiętam Firebird nie ma typu Date a jedynie DateTime (Timestamp). Czy odjęcie 14 od timestampa nie oznacza przypadkiem odjęcia sekund ? Na razie przygotowuję się teoretycznie, naprawdę nie wiem.
Pozdrawiam Rony
Paweł - 06-01-2007 00:02
> Dziękuję wszystkim. BTW. jesteś sprawdziłeś to rozwiązanie ? > Z tego co pamiętam Firebird nie ma typu Date a jedynie DateTime To jest chyba częściowo prawdziwe w dialect 1
> (Timestamp). Czy odjęcie 14 od timestampa nie oznacza przypadkiem odjęcia > sekund ? Na razie przygotowuję się teoretycznie, naprawdę nie wiem.
W dialect 3 jest time, date, timestamp. Odjęcie 1 od date i timestamp powoduje zmniejszenie o dzień, odjęcie 1 od time powoduje zmniejszenie o 1 sekunde.
pozdr
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
=?UTF-8?Q?=5Bmysql=5D_jak_pobra=C4=87_warto=C5=9B=C4=87_ AUTO=5F?==?UTF-8?Q?INCREMENT=3F?=
Wstawianie nowego wiersza w przypadku jego braku podczas SELECT w PostgreSQL
[Postgres] jak zastapic brakujaca funkcje regexp_replace w PG wersji 8.0
[postgresql] szukanie po indeksie tsearch'owym wlecze sie - da siejakos przyspieszyc?
[PostgreSQL] Konfiguracja w pg_hba.conf - dziala tylko "trust"
Postgresql - gdzie moge sie nauczyc pisania funkcji i triggerow w
zanotowane.pldoc.pisz.plpdf.pisz.plshanti.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|