juzwa
8.03.2008, 12:48:55
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
11.03.2008, 12:58:13
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
18.03.2008, 13:12:07
@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.htmlA tak w skrócie:
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.htmlP.S. Chyba źle łapie formatowanie dla '""'