2010-12-21 32 views
18

Muszę obliczyć czas spędzany przez użytkownika na stronie. Różnica między czasem wylogowania a czasem logowania daje mi coś w stylu "Pan X spędził 4 godziny i 43 minuty online". Tak więc, aby zapisać 4 godziny i 43 minuty, zadeklarowałem: duration czas NIE NOT NULLCzas przechowywania danych MySQL - typ danych?

Czy to jest ważny czy lepszy sposób na zapisanie tego? Muszę przechowywać w DB, ponieważ mam inne obliczenia muszę użyć tego dla + innych przypadków użycia.

Odpowiedz

32

Przechowywanie jako liczba całkowita w sekundach będzie najlepszym sposobem.

  • UPDATE będzie prosty i - tj duration = duration + $increment
  • Jak wspomniano Tristram są limitations użyciem pola TIME - np "TIME wartości mogą być w zakresie od '-838:59:59' do '838:59:59'"
  • Formatowanie wyświetlania dni/godzin/minut/sekund nie będzie na stałe.
  • Wykonanie swoich innych obliczeń prawie na pewno będzie bardziej przejrzyste podczas pracy z całkowitą liczbą "liczby sekund".
+0

ok brzmi goodwill używać int, dzięki. – Juds

+1

Zdecydowanie polecę z 'TIME'. Nie mogę myśleć o tym, że ktoś spędza 34 dni z rzędu w Internecie. Jeśli tak, jestem gotowy, aby ten rzadki przypadek napotkał błąd. Instrukcje 'UPDATE' mogą być łatwo wykonane za pomocą' ADDTIME() '. Dzięki temu możesz również dodać 30 minut i 23 sekundy bez przenoszenia ich na sekundy. Nic nie jest na stałe zakodowane, zawsze możesz zrobić 'TIME_TO_SEC()' - jeśli naprawdę tego potrzebujesz (w co wątpię). – Gerald

0

Nie będę wykorzystywać czasu, ponieważ będziesz ograniczony do 24 godzin. Najłatwiej byłoby po prostu zapisać liczbę całkowitą w minutach (lub sekundach w zależności od potrzebnej rozdzielczości).

+0

liczba całkowita nie poda dokładnego czasu, np. 4 godziny, 45 minut i 32 sekundy, chyba że przechowam w ciągu kilku sekund? Miałem nadzieję na automatyczne sformatowanie wpisu bezpośrednio w DB jako x godzin, x minut. (może dodać też x sekund) zamiast przechowywać go jako 474747474 sekundy, co z kolei wymaga konwersji do postaci czytelnej dla człowieka. – Juds

+0

@Juds Mogę argumentować, że wygoda posiadania sformatowanego przedziału czasu w DB jest przeważona przez wiele innych czynników @ Tristram i @Riedsio wspomnieli. Dlaczego nie pozwolić, aby formatowanie przedziałów było problemem dotyczącym warstwy prezentacji? :) –

+5

czas nie jest ograniczony do 24 godzin, patrz powyżej – Ashley

Powiązane problemy