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
DATETIMEAleTIMESTAMPobejmuje 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 :
YYYYLubYY - 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.
Diana Mary Blacker
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:

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:

3. CURTIME() — pobiera tylko bieżący czas
Funkcja CURTIME() zwraca bieżący czas HH:MI:SS formacie bez daty.
Zapytanie:
SELECT CURTIME();
Wyjście:

4. DATE() — Wyodrębnij część daty z wartości DATETIME
TheDATE()funkcja wyodrębnia tylko część daty z aDATETIMELubTIMESTAMPwartość 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:
architektura Javy
| 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 lubDATETIMEwartość.
Składnia:
DATE_ADD(typ wyrażenia INTERVAL daty);
protokół internetowy smtp
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);
xd xd znaczenieinterwał - 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.
posortuj listę tablic w Javie
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
ChwilaDATETIMEnie przechowuje informacji o strefie czasowejTIMESTAMProbi. Jeśli Twoja aplikacja uwzględnia strefę czasową (na przykład w aplikacjach międzynarodowych), rozważ użycieTIMESTAMPdla 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 wWHEREklauzula. 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 jakNOW()LubCURDATE()wWHEREklauzulę, 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 jakNOW() CURDATE() DATE_ADD() DATEDIFF()IDATE_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.