Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PGSQL] Czy istnieje funkcja zwracająca różnicę czasu w dowolnym formacie DNI, LATA, GODZINY
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
juzwa
szukałem coś na ten temat i niczego znalazłem

mam zapytanie

select now() - data -> zwraca mi wynik (w zależności od różnicy) np 12 dni 12:03:09.123

i ja chcę wiedzieć ile to jest np minut, albo godzin
na razie radze sobie tak, że

date_part() wyciągam sobie cześć i ją mnożę (*24 - gdy chce liczbe godzin, *3600 gdy chcę liczbę minut) itp itd

to jest takie bądź co bądź toporne rozwiązanie, bo jeśli chcę mieć godziny to nie obchodzą mnie minuty, a jeśli minuty to już muszę jedno date_part() dołożyć (dla godzin) aby wyciągnąć minuty no i trzeba mnożnik zmienić

czy istnieje jakaś funkcja która by zwracała rezultat w formacie jakim się chce (w dniach, godzinach, minutach)
Roly
W bazach danych w ogóle jest problem z datami. Ze swojej strony polecam trzymanie daty jako znacznik czasu Unix-a (jako ilość sekund jakie upłynęły od 1 stycznia 1970) w kolumnie innej niż date np Int. Wyciągasz sobie taki znacznik z bazy i robisz różnice jak na normalnych liczbach całkowitych np z time(). I potem korzystasz z funkcji date() w PHP i konwertujesz do czego chcesz. Jeżeli będziesz miał z tym problemy to pisz postaram się pomóc.
Sedziwoj
@Roly
Lepiej poczytaj, a nie dawaj takie rozwiązania.

@juzwa
Czytanie dokumentacji, czy raczej umiejętne korzystanie jest przydatne:
http://www.postgresql.org/docs/8.2/static/...formatting.html

A tak w skrócie:
  1. SELECT to_char( ( now() - '2008-03-18'::date ), 'DD "dni" HH24:MI:SS' );


Jeszcze to może się przydać:
http://www.postgresql.org/docs/8.2/static/...s-datetime.html

P.S. Chyba źle łapie formatowanie dla '""' biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.