Funkcje daty i godziny w MySQL

Funkcje daty i godziny w MySQL

Obsługiwanie data i godzina dane w MySQL są niezbędne dla wielu operacji na bazach danych, szczególnie jeśli chodzi o obsługę znaczników czasu, planowanie zadań lub generowanie danych na podstawie czasu. MySQL udostępnia różnorodne funkcje daty i czasu, które pomagają użytkownikom pracować z wartościami dat, wykonywać obliczenia i formatować je według potrzeb.

Funkcje te umożliwiają programistom wykonywanie obliczeń, wyodrębnianie określonych części daty lub nawet formatowanie danych wyjściowych w celu zapewnienia lepszej czytelności. W tym artykule omówimy najczęściej używane funkcje daty MySQL, wyjaśnimy ich składnię, podamy przykłady i przeprowadzimy Cię przez proces ich efektywnego wykorzystania

Zrozumienie typów danych daty i godziny w MySQL

Praca z datami w MySQL może być trudna dla początkujących, zwłaszcza że format daty w bazie danych musi odpowiadać formatowi danych wejściowych podczas wstawiania. W wielu przypadkach zamiast używać prostej daty, może być konieczne przechowywanie zarówno daty, jak i godziny, w zależności od przypadku użycia. To tutaj DATETIME I TIMESTAMP typy danych wchodzą w grę.

MySQL udostępnia następujące typy danych do przechowywania wartości daty i godziny:

1. DATA :

  • Format : YYYY-MM-DD
  • Służy do przechowywania tylko daty (rok, miesiąc i dzień) bez żadnego składnika czasu.

2. DATAGODZINA :

  • Format : YYYY-MM-DD HH:MM:SS
  • Przechowuje zarówno datę, jak i godzinę, dzięki czemu jest przydatne, gdy trzeba uchwycić określone godziny wraz z datą.

3. ZNACZNIK CZASOWY :

  • Format : YYYY-MM-DD HH:MM:SS
  • Podobny do DATETIME Ale TIMESTAMP obejmuje także obsługę stref czasowych. Automatycznie aktualizuje bieżący znacznik czasu w przypadku modyfikacji rekordu, dzięki czemu idealnie nadaje się do śledzenia zmian w rekordach w czasie.

4. ROK :

  • Format : YYYY Lub YY
  • Służy do przechowywania samego roku, co może być przydatne w zastosowaniach, w których potrzebny jest tylko rok, np. śledzenie lat urodzenia lub lat podatkowych.

Funkcje daty i godziny w MySQL

Przyjrzyjmy się teraz funkcjom daty MySQL, których można użyć do efektywnego manipulowania danymi dotyczącymi daty i godziny oraz wykonywania zapytań o nie.

1. TERAZ() – Uzyskaj aktualną datę i godzinę

The TERAZ() funkcja pobiera aktualną datę i godzinę RRRR-MM-DD GG:MI:SS format.

Zapytanie:

 SELECT NOW();   

Wyjście:

teraz metoda obrazu wyjściowego

2. CURDATE() — pobiera tylko bieżącą datę

Jeśli potrzebujemy tylko bieżącej daty bez części czasu, której możemy użyć CURDATE() który zwraca datę YYYY-MM-DD format.

Zapytanie:

 SELECT CURDATE();   

Wyjście: 

WYJŚCIE2

3. CURTIME() — pobiera tylko bieżący czas

Funkcja CURTIME() zwraca bieżący czas HH:MI:SS formacie bez daty.

Zapytanie:

 SELECT CURTIME();   

Wyjście: 

WYJŚCIE 3

4. DATE() — Wyodrębnij część daty z wartości DATETIME

The DATE() funkcja wyodrębnia tylko część daty z a DATETIME Lub TIMESTAMP wartość odrzucająca czas.

Przykład: Do stołu tzw users :

Id Nazwa Czas urodzenia
4120 Praktyka 26.09.1996 16:44:15,581

Zapytanie:

 SELECT Name DATE(BirthTime)    
AS BirthDate FROM Test;

Wyjście:

Nazwa Data urodzenia
Praktyka 26.09.1996

5. EXTRACT() – Wyodrębnij określone części daty

EXTRACT() służy do wyodrębnienia określonych części daty, takich jak dzień, miesiąc lub rok. Funkcja ta może być szczególnie pomocna podczas analizowania lub porównywania różnych części daty. Można rozważyć kilka jednostek, ale tylko niektóre są używane, np MIKROSEKUNDA SEKUNDA GODZINA DZIEŃ TYDZIEŃ MIESIĄC KWARTALNOŚĆ ROK itd. A „data” jest prawidłowym wyrażeniem daty.

Składnia:

WYCIĄG(jednostka OD daty);

Zapytanie o dzień wyodrębnienia:

 SELECT Name Extract(DAY FROM    
BirthTime) AS BirthDay FROM Test;

Wyjście: 

Nazwa Urodziny
Praktyka 26

Zapytanie o wyodrębnienie roku:

 SELECT Name Extract(YEAR FROM BirthTime)   
AS BirthYear FROM Test;

Wyjście: 

Nazwa Rok urodzenia
Praktyka 1996

Zapytanie o wyodrębnienie sekund:

 SELECT Name Extract(SECOND FROM    
BirthTime) AS BirthSecond FROM Test;

Wyjście:

Nazwa Narodziny Drugie
Praktyka 581

6. DATE_ADD() - Dodaj interwały do ​​daty

The DATA_ADD() funkcja pozwala na dodanie przedziałów czasowych (np. dni, miesięcy, lat) do daty lub DATETIME wartość.

Składnia:

DATE_ADD(typ wyrażenia INTERVAL daty);

Przykład: Dla poniższej tabeli o nazwie „ Test '

Id Nazwa Czas urodzenia
4120 Praktyka 26.09.1996 16:44:15,581

Zapytanie do Dodaj 1 rok do daty

 SELECT Name DATE_ADD(BirthTime INTERVAL    
1 YEAR) AS BirthTimeModified FROM Test;

Wyjście:

Nazwa Zmodyfikowano godzinę urodzenia
Praktyka 26.09.1997 16:44:15,581

Zapytanie o dodanie 30 dni do daty

 SELECT Name DATE_ADD(BirthTime    
INTERVAL 30 DAY) AS BirthDayModified FROM Test;

Wyjście:

Nazwa Dzień urodzeniaZmodyfikowany
Praktyka 26.10.1996 16:44:15,581

Zapytanie o dodanie 4 godzin do daty

 SELECT Name DATE_ADD(BirthTime INTERVAL   
4 HOUR) AS BirthHourModified FROM Test;

Wyjście: 

Nazwa Narodziny Drugie
Praktyka 26.10.1996 20:44:15,581

7. RÓŻNICA DATY() – Znajdź różnicę między dwiema datami

Ta funkcja zwraca liczbę dni pomiędzy dwiema datami. 

Składnia:

DATEDIFF(interwałdata1 data2);

interwał - minuta/godzina/miesiąc/rokitd

data1 i data2 — wyrażenie daty/godziny

Zapytanie do Znajdź różnicę między dwiema datami

 SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;   

Wyjście: 

Różnica dat

8. DATE_FORMAT() - Formatuj datę i godzinę

DATE_FORMAT() pozwala nam sformatować plik DATA DATAGODZINA Lub ZNACZNIK CZASOWY wartość do niestandardowego formatu przy użyciu symboli zastępczych.

Składnia:

DATE_FORMAT(format daty);

data jest prawidłową datą, a format określa format wyjściowy daty/godziny. Formaty, które można zastosować to:

  • %a — Skrócona nazwa dnia tygodnia (niedziela-sobota)
  • %b — Skrócona nazwa miesiąca (styczeń-grudzień)
  • %c – numeryczny miesiąc (0-12)
  • %D – Dzień miesiąca z angielskim przyrostkiem (0, 1, 2, 3)
  • %d – numeryczny dzień miesiąca (00-31)
  • %e — numeryczny dzień miesiąca (0-31)
  • %f-mikrosekundy (000000-999999)
  • %H-godzina (00-23)
  • %h-godzina (01-12)
  • %I-godzina (01-12)
  • %i-minuty numeryczne (00-59)
  • %j-Dzień roku (001-366)
  • %k-godzina (0-23)
  • %l-godzina (1-12)
  • %M-Nazwa miesiąca (styczeń-grudzień)
  • %m-miesiąc numeryczny (00-12)
  • %p-AM lub PM
  • %r-Czas 12-godzinny (gg:mm: ss, po którym następuje AM lub PM)
  • %S-sekund (00-59)
  • %s-sekundy (00-59)
  • %T-Czas 24-godzinny (gg:mm:ss)
  • %U-Week (00-53), gdzie niedziela jest pierwszym dniem tygodnia
  • %u-Week (00-53), gdzie poniedziałek jest pierwszym dniem tygodnia
  • %V-Week (01-53), gdzie niedziela jest pierwszym dniem tygodnia, używany z %X
  • %v-Tydzień (01-53), gdzie poniedziałek jest pierwszym dniem tygodnia, używany z %x
  • %W-Nazwa dnia tygodnia (niedziela-sobota)
  • %w-Dzień tygodnia (0=niedziela 6=sobota)
  • %X-Rok tygodnia, w którym niedziela jest pierwszym dniem tygodnia. Cztery cyfry używane z %V
  • %x-Rok tygodnia, w którym poniedziałek jest pierwszym dniem tygodnia. Cztery cyfry używane z %v
  • %Y-Rok, cztery cyfry
  • %y-Rok, dwie cyfry

Zapytanie o formatowanie daty

 SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;  

Wyjście:

Sformatowana_data
Czwartek 10 kwietnia 2025

Najlepsze praktyki pracy z datą i godziną w MySQL

1. Zawsze używaj właściwych formatów dat

Podczas wstawiania lub aktualizowania dat upewnij się, że przestrzegasz oczekiwanych formatów MySQL ( YYYY-MM-DD YYYY-MM-DD HH:MI:SS ). Dzięki temu Twoje zapytania zwrócą oczekiwane wyniki bez błędów.

2. Rozważania dotyczące strefy czasowej za pomocą TIMESTAMP

Chwila DATETIME nie przechowuje informacji o strefie czasowej TIMESTAMP robi. Jeśli Twoja aplikacja uwzględnia strefę czasową (na przykład w aplikacjach międzynarodowych), rozważ użycie TIMESTAMP dla pól daty i godziny, które muszą uwzględniać różne strefy czasowe.

3. Obsługa zakresów dat w zapytaniach

W przypadku filtrowania danych na podstawie zakresów dat (np. pobierania wszystkich rekordów z konkretnego miesiąca lub roku) upewnij się, że używasz odpowiednich porównań dat w WHERE klauzula. Przykład:

 SELECT * FROM orders   
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';

4. Rozważania dotyczące wydajności

Podczas pracy z funkcjami daty i godziny, zwłaszcza w przypadku dużych zbiorów danych, należy pamiętać o wpływie na wydajność. Unikaj używania funkcji takich jak NOW() Lub CURDATE() w WHERE klauzulę, ponieważ mogą spowolnić zapytania w przypadku dużych tabel.

Wniosek

Funkcje daty i godziny MySQL są niezbędnymi narzędziami obsługiwanie I manipulowanie dane tymczasowe w Twoich bazach danych. Opanowując funkcje takie jak NOW() CURDATE() DATE_ADD() DATEDIFF() I DATE_FORMAT() z którym możesz łatwo pracować obliczenia oparte na czasie porównania I formaty . Kluczem do efektywnego korzystania z tych funkcji jest zrozumienie ich składni, kiedy i jak z nich korzystać oraz ich wpływu na wydajność w dużych zbiorach danych. Dzięki tej wiedzy będziesz w stanie tworzyć bardziej wydajne, dokładne i skalowalne zapytania dla wszystkich Twoich potrzeb związanych z datą i czasem w MySQL.

Utwórz quiz