Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: timestamp() z PHP vs. TIMESTAMP/DATETIME z MySQL
Forum PHP.pl > Forum > Bazy danych > MySQL
Salvation
Witam smile.gif
Chciałbym się dowiedzieć czy to prawda, że lżejszym rozwiązaniem dla bazy danych MySQL jest utworzenie kolumny typu INTEGER i przechowywanie w niej timestamp() z PHP, niż utworzenie kolumny typu TIMESTAMP/DATETIME, która jest jakby nie było stringiem.
Z góry dziękuję za odpowiedzi smile.gif
vokiel
Wewnętrznie timestamp to też int, z tą różnicą, że baza ma wbudowane narzędzia do jego obsługi.

Cytat
TIMESTAMP: A four-byte integer representing seconds UTC since the epoch ('1970-01-01 00:00:00' UTC)
Salvation
No tak, TIMESTAMP też zajmuje 4 Bajty. Tylko chodzi o sam mechanizm bazy czy szybciej jednak obsłuży wartość INTEGER?
Pyton_000
Cytat(Salvation @ 17.03.2016, 18:05:50 ) *
Witam smile.gif
Chciałbym się dowiedzieć czy to prawda, że lżejszym rozwiązaniem dla bazy danych MySQL jest utworzenie kolumny typu INTEGER i przechowywanie w niej timestamp() z PHP, niż utworzenie kolumny typu TIMESTAMP/DATETIME, która jest jakby nie było stringiem.
Z góry dziękuję za odpowiedzi smile.gif


Co jest stringiem? Datetime? Timestam?...

Typów używa się zgodnie z przeznaczeniem. Po co pchać to w Int? Będziesz liczył na tym czy co? Data to data, czas to czas. To może od razu w string wpakuj...
Salvation
Może nie będę robił żadnych operacji matematycznych, ale szybciej jest mi zapisać timestamp() z PHP jako INTEGER w MySQL niż przy dodawaniu rekordu przepuszczać to jeszcze przez jakieś funkcje.
markonix
Przy TIMESTAMP wystarczy ustawić odpowiednio ON INSERT / UPDATE i masz jeszcze mniej roboty.
Salvation
No ok. Przy rejestracji mam np.
Kod
DEFAULT CURRENT_TIMESTAMP
a jak to będzie wyglądać dla kolumny np. `last_login`? Gdzie jest nadpisywana kiedy użytkownik się wylogowuje?
markonix
Jak sama nazwa kolumny wskazuje to jest data LOGOWANIA, a nie wylogowania.
Nigdy nie miałem potrzeby zapisywania godziny czyjegoś wylogowania.
Salvation
Mniejsza z tym, kiedy się wykonuje UPDATE, podałem tylko (niefortunny) przykład użycia.
Pyton_000
@markonix last_login czyli data poprzedniego logowania wink.gif
markonix
@Salvation
Podałem tylko przykład kiedy timestampy przyspieszają wręcz pracę, ale to wciąż baza danych, a nie aplikacja więc skąd ma wiedzieć o czymś takim jak logowanie.
Last_login to powinien być zwykłe DATETIME i tyle. Nie wiem jaką widzisz różnicę w last_login = time(), a last_login = date()..

@Pyton_000
Data logowania, a data ostatniego logowania to jak dla mnie to samo.
Co innego jakbym chciał zapisywać datę poprzedniego logowania np. do tekstu "Nie widzieliśmy się X dni".
Salvation
Ok, to teraz pytanie, bo nie korzystałem z tego
Kod
ON UPDATE CURRENT_TIMESTAMP

Jeżeli zrobię UPDATE na danym wierszu - obojętnie na jakiej kolumnie, to kolumna z powyższym kodem "zaktualizuje się sama", tak?
markonix
Tak. To data ostatniej edycji/aktualizacji.
Czasem można to powiązać z jakimś procesem w aplikacji ale prawidłowo należy to traktować po prostu jako kolumnę służącą do przechowywania wyżej wymienionej informacji.
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.