Ten samouczek obejmie podstawy pracy z typem danych znaczników czasu w MySQL.
Typ danych znacznika czasu pozwala przechowywać wartości daty i godziny w formacie znacznika czasu, ponieważ yyyy-mm-dd hh: mm: ss.
Wartość typu danych znaczników czasu w zakresie MySQL waha się od 1970-01-01 00:00:01 do 2038-01-19 03:14:07 w UTC.
Podczas przechowywania wartości znacznika czasu MySQL przekonwertuje bieżący czas na UTC i przechowuje go w tabeli docelowej. MySQL przekonwertuje wartość z UTC na bieżący czas podczas pobierania. Dobrze jest pamiętać, że ta funkcja dotyczy tylko typu danych znacznika czasu.
Dlatego ponieważ strefę czasową można ustawić na danej sesji, mój SQL pozwala odzyskać tę samą wartość przechowywaną tak długo, jak strefa czasowa pozostaje stała.
Przykład strefy czasowej MySQL
Obliczmy przykład pracy z typem danych znaczników czasu w MySQL. Rozważ poniższą tabelę z kolumną czasopisma.
Utwórz bazę danych tempdb;
Użyj tempdb;
Utwórz próbkę tabeli (
ID Int Auto_increment Key podstawowy,
T Timestamp
);
SET TIME_ZONE = '+03:00';
Powyższe zapytanie tworzy przykładową bazę danych i tabelę z kolumną czasu znacznika czasu. Ustawiamy również strefę czasową dla sesji za pomocą parametru Time_Zone.
Następnie możemy wstawić wartości daty i godziny do kolumny, jak pokazano w zapytaniu poniżej:
wstaw do próbki (t)
Wartości („2022-10-10 23:45:23”),
(„2020-12-10 13:43:32”),
('1990-10-10 16:23:32');
Następnie możemy wybrać wartości znaczników czasu z tabeli, jak pokazano:
Wybierz * z próbki;
Wynik:
Demonstrowanie użycia strefy czasowej w znaczniku czasu
Jak wspomniano, jeśli strefa czasowa jest stała, możemy uzyskać tę samą wartość, którą zapisaliśmy w tabeli, jak pokazano powyżej.
Zobaczmy, jakie wartości otrzymujemy, jeśli zmienimy wartość strefy czasowej:
SET TIME_ZONE = '-7: 00';
Wybierz * z próbki;
Jeśli uruchomimy powyższe oświadczenie, powinniśmy uzyskać tabelę o wartości, jak pokazano:
Zauważ, że otrzymujemy różne wartości z tego, co zapisaliśmy. Dzieje się tak z powodu zmiany w strefie czasowej.
Korzystanie z automatycznej inicjalizacji za pomocą typu danych znaczników czasu
Możemy automatycznie zainicjować daną kolumnę, ustawiając domyślne ograniczenie na Current_timestamp.
W takim przypadku MySQL wstawi bieżącą wartość znacznika czasu do danego wiersza, jak pokazano w poniższym przykładzie:
Utwórz próbkę tabeli (
ID Int Auto_increment Key podstawowy,
T WYMAGANIE DEMALTALNE
);
Następnie możemy wstawić wartości do tabeli, jak pokazano:
Wstaw do próbki (id)
Wartości (1), (2), (3);
Jak można zauważyć, nie przewidujemy kolumny T. Powinno to zmusić MySQL do użycia wartości domyślnej, jak pokazano:
Wybierz * z próbki;
Wyjście:
Jak widać, wszystkie wiersze mają tę samą wartość znacznika czasu oznaczającą czas wstawki. Ta funkcja jest określana jako automatyczna inicjalizacja.
Wniosek
W tym przykładzie omówiliśmy podstawy pracy z typem danych czasowych w MySQL.