logo

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 doDATETIMEAleTIMESTAMPobejmuje 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:

teraz metoda obrazu wyjściowego' title=

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' loading='lazy' title=

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' loading='lazy' title=

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
4120Praktyka26.09.1996 16:44:15,581

Zapytanie:

SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Wyjście:

architektura Javy
Nazwa Data urodzenia
Praktyka26.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
Praktyka26

Zapytanie o wyodrębnienie roku:

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

Wyjście: 

Nazwa Rok urodzenia
Praktyka1996

Zapytanie o wyodrębnienie sekund:

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

Wyjście:

Nazwa Narodziny Drugie
Praktyka581

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
4120Praktyka26.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
Praktyka26.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
Praktyka26.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
Praktyka26.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 znaczenie

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.

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.

Utwórz quiz