Daty i godziny są ważne, pomagają utrzymać porządek i stanowią integralny aspekt każdego działania oprogramowania.

Efektywna praca z nimi w bazie danych może czasami wydawać się zagmatwana, niezależnie od tego, czy działa w różnych strefach czasowych, dodaje / odejmuje daty i wykonuje inne operacje.

Poznaj różne dostępne funkcje MySQL, aby łatwo obsługiwać daty / godziny w bazie danych i zarządzać nimi.

Praca ze strefami czasowymi

Aby zachować standaryzację, powinieneś zawsze pracować tylko z datami / godzinami w strefie czasowej UTC. Za każdym razem, gdy nawiązujesz połączenie z bazą danych MySQL, powinieneś przełączyć strefę czasową na UTC, co można zrobić za pomocą następującej instrukcji SQL:

SET TIME_ZONE = '+0: 00'

Ponieważ wszystkie daty będą teraz zapisywane w UTC, zawsze wiesz, z czym pracujesz, dzięki czemu wszystko jest prostsze i prostsze.

W razie potrzeby możesz łatwo przekonwertować strefę czasową dowolnej wartości daty / godziny / sygnatury czasowej z poręcznym CONVERT_TZ ()

instagram viewer
Funkcja MySQL. Najpierw musisz znać przesunięcie, na przykład PST na zachodnim wybrzeżu Ameryki Północnej to UTC -08: 00, więc możesz użyć:

PolyTime to najlepsza aplikacja do konwersji stref czasowych dla wielu miast jednocześnie

PolyTime, nowa aplikacja MakeUseOf, ułatwia porównywanie stref czasowych na całym świecie. Oto, co możesz z tym zrobić i jak to działa.

SELECT CONVERT_TZ („2021-02-04 21:47:23”, „+0: 00”, „-8: 00”);

To skutkuje 2021-02-04 13:47:23 co jest dokładnie poprawne. Trzy argumenty zostały przekazane CONVERT_TZ () są pierwszą datą / godziną / znacznikiem czasu, od którego zaczynasz (użyj teraz () jako aktualnego czasu), druga zawsze będzie '+0:00' ponieważ wszystkie daty są wymuszane na UTC w bazie danych, a ostatnia jest przesunięciem, na które chcemy przekonwertować datę.

Dodaj / odejmij daty

Często trzeba dodawać lub odejmować od dat, na przykład jeśli chcesz pobrać rekordy sprzed tygodnia lub zaplanuj coś za miesiąc.

Na szczęście MySQL ma doskonałe DATE_ADD () i DATE_SUB () funkcje, które bardzo ułatwiają to zadanie. Na przykład możesz odjąć dwa tygodnie od bieżącej daty za pomocą instrukcji SQL:

SELECT DATE_SUB (now (), interwał 2 tygodnie);

Jeśli zamiast tego chcesz dodać trzy dni do istniejącej sygnatury czasowej, użyj:

SELECT DATE_ADD ('2021-02-07 11:52:06', co 3 dni);

Obie funkcje działają tak samo, pierwszy argument to znacznik czasu, od którego zaczynasz, a drugi argument to przedział czasu do dodania lub odjęcia. Drugi argument jest zawsze formatowany tak samo, zaczynając od słowa interwał po którym następuje wartość liczbowa i sam interwał, którym może być dowolna z następujących wartości: sekunda, minuta, godzina, dzień, tydzień, miesiąc, kwartał, rok.

Na przykład, jeśli chcesz pobrać wszystkie logowania, które miały miejsce w ciągu ostatnich 34 minut, możesz użyć instrukcji SQL, takiej jak:

SELECT * FROM logins WHERE login_date> = DATE_SUB (now (), interwał 45 minut);

Jak widać, spowoduje to pobranie wszystkich rekordów z pliku loginy tabela z datą logowania większą niż aktualny czas minus 45 minut, czyli innymi słowy ostatnie 45 minut.

Uzyskaj różnicę między datami

Czasami musisz sprawdzić, ile czasu minęło między dwiema datami. Możesz łatwo uzyskać liczbę dni między dwiema różnymi datami za pomocą DATEDIFF funkcja, taka jak poniższa instrukcja SQL:

SELECT DATEDIFF (now (), '2020-12-15');

Plik DATEDIFF funkcja przyjmuje dwa argumenty, z których oba są znacznikami daty / czasu i podaje liczbę dni między nimi. Powyższy przykład pokaże liczbę dni, które upłynęły od 15 grudnia 2020 r. Do dzisiaj.

Aby uzyskać liczbę sekund między dwiema datami, plik TO_SECONDS () funkcja może się przydać, na przykład:

SELECT TO_SECONDS (now ()) - TO_SECONDS ('2021-02-05 11:56:41');

Spowoduje to liczbę sekund między dwoma podanymi datami.

Wyodrębnij segmenty z dat

Istnieją różne funkcje MySQL, które pozwalają łatwo wyodrębnić określone segmenty z dat, na przykład jeśli chcesz tylko podać miesiąc, dzień roku lub godzinę. Oto kilka przykładów takich funkcji:

WYBIERZ MIESIĄC ('2021-02-11 15:27:52');
WYBIERZ GODZINĘ (teraz ());
SELECT DAYOFYEAR („2021-07-15 12:00:00”);

Powyższe instrukcje SQL spowodowałyby 02, bieżąca godzina i 196 ponieważ 15 września jest 196 dniem roku. Oto lista wszystkich dostępnych funkcji wyodrębniania dat, z których każda przyjmuje tylko jeden argument, z którego wyodrębnia się datę:

- DRUGA()
- MINUTA()
- GODZINA()
- DZIEŃ ()
- TYDZIEŃ () - liczba 0 - 52 określająca tydzień w roku.
- MIESIĄC ()
- KWARTAŁ () - liczba 1 - 4 określająca kwartał roku.
- ROK()
- DAYOFYEAR () - dzień roku (np. 15 września = 196).
- LAST_DAY () - Ostatni dzień w podanym miesiącu.
- DATA () - Data w formacie RRRR-MM-DD bez godziny.
- CZAS () Czas w formacie HH: II: SS bez daty.
- TO_DAYS () - liczba dni od 0 n.e.
- TO_SECONDS () - liczba sekund od 0 roku n.e.
- UNIX_TIMESTAMP () - Liczba sekund od początku epoki (1 stycznia 1970)

Na przykład, jeśli chcesz pobrać tylko miesiąc i rok, w którym wszyscy użytkownicy zostali utworzeni, możesz użyć instrukcji SQL, takiej jak:

SELECT id, MIESIĄC (utworzono_at), ROK (utworzono_at) OD użytkowników;

Spowoduje to pobranie wszystkich rekordów w ramach użytkowników tabeli i pokaż numer identyfikacyjny, miesiąc i rok, w którym każdy użytkownik został utworzony.

Grupowanie rekordów według okresu dat

Jednym z doskonałych zastosowań funkcji daty jest możliwość grupowania rekordów według okresów dat GRUPUJ WEDŁUG w instrukcjach SQL. Na przykład, może chcesz pobrać całkowitą kwotę wszystkich zamówień w 2020 roku pogrupowanych według miesięcy. Możesz użyć instrukcji SQL, takiej jak:

WYBIERZ MIESIĄC (utworzony_at), SUMA (kwota) Z zamówień GDZIE utworzono_o MIĘDZY '2020-01-01 00:00:00' A '2020-12-31 23:59:59' GRUPA WEDŁUG MIESIĄCA (utworzono_at);

Spowoduje to pobranie wszystkich zamówień złożonych w roku 2020, pogrupowanie ich według miesiąca, w którym zostały utworzone, i zwrócenie 12 rekordów pokazujących całkowitą kwotę zamówienia w każdym miesiącu roku.

Należy pamiętać, że aby uzyskać lepszą wydajność indeksu, zawsze najlepiej unikać korzystania z funkcji daty, takich jak ROK() w klauzuli WHERE instrukcji SQL i zamiast tego użyj rozszerzenia POMIĘDZY operator, jak pokazano w powyższym przykładzie.

Nigdy więcej nie mylić z datami

Korzystając z powyższej wiedzy, możesz teraz efektywnie pracować, tłumaczyć i wykonywać operacje w datach i godzinach w szerokiej gamie przypadków użycia.

Pamiętaj, aby zawsze korzystać z UTC podczas pracy z datami dla uproszczenia i wykorzystać powyższe wskazówki, aby efektywnie zarządzać daty w oprogramowaniu, niezależnie od tego, czy chodzi o wykonywanie prostych obliczeń, czy łatwe pobieranie raportów pogrupowanych według dat okresy.

Jeśli dopiero zaczynasz przygodę z SQL, zapoznaj się z tymi podstawowe polecenia SQL aby pomóc ulepszyć korzystanie z SQL.

E-mail
Jak tworzyć profesjonalne raporty i dokumenty w programie Microsoft Word

W tym przewodniku omówiono elementy profesjonalnego raportu oraz omówiono strukturę, styl i finalizację dokumentu w programie Microsoft Word.

Powiązane tematy
  • Nieokreślony
O autorze
Matt Dizak (16 opublikowanych artykułów)Więcej od Matta Dizaka

Zapisz się do naszego newslettera

Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Jeszcze jeden krok…!

Potwierdź swój adres e-mail w wiadomości, którą właśnie wysłaliśmy.

.