3.1 Lista funkcji do pracy z datą i czasem

Data i czas to jedne z najpowszechniejszych typów danych przechowywanych w bazach danych. Dlatego lista funkcji do pracy z nimi jest bardzo duża. Oto najpopularniejsze z nich:

# Funkcjonować Opis
1 BIEŻĄCY() Zwraca bieżącą datę
2 CURTIME() Zwraca bieżący czas
3 TERAZ(), CZAS LOKALNY() Zwraca bieżącą datę i aktualny czas
4 ROK() Zwraca rok od daty
5 MIESIĄC() Zwraca miesiąc z daty
6 DZIEŃ(), DZIEŃMIESIĄCA() Zwraca dzień z daty
7 GODZINA() Zwraca tylko godziny od czasu
8 MINUTA() Ogłasza minuty od czasu
9 DRUGI() Zwraca sekundy od czasu
10 NAZWA DNIA() Zwraca nazwę dnia tygodnia: Poniedziałek, ...
jedenaście NAZWA MIESIĄCA() Zwraca nazwę miesiąca: styczeń, ...
12 TYDZIEŃ() Zwraca tydzień z daty
13 DZIEŃ POWSZEDNI() Zwraca numer dnia tygodnia: poniedziałek - 0, wtorek - 1
14 ROK TYGODNIOWY() Zwraca numer tygodnia w roku
15 DZIEŃ TYGODNIA() Zwraca numer dnia tygodnia: niedziela - 1, poniedziałek - 2
16 DZIEŃROKU() Zwraca dzień roku: 1-366
17 DATA() Zwraca tylko datę z obiektu „datetime”.
18 DODAJ() Dodaje dni do daty
19 PODDATA() Odejmuje dni od daty
20 DODAJ CZAS() Dodaje od czasu do czasu
21 PODCZAS() Odejmuje czas od czasu

Celowo pogrupowałem funkcje w małe grupy, aby ułatwić zrozumienie, jak z nimi pracować. Poniżej rozważymy jedną funkcję z każdej grupy.

Pełną listę funkcji do pracy z datą i czasem znajdziesz pod linkiem: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

3.2 Funkcje wywołujące

Przy okazji, ponieważ uczymy się tak wielu funkcji, myślę, że warto wspomnieć, że operator SELECTnie musi być używany z FROM. Może zwrócić wartość dowolnego wyrażenia. Ogólny widok, który daje szablon:

SELECT expression

A jeśli chcesz wywołać jakąś funkcję, musisz napisać kod taki jak:

SELECT function(options)

Poniżej podam kilka przykładów działania operatora SELECTbez uciekania się do tabel:

# Wniosek Wynik
1 WYBIERZ 1+1 2
2 WYBIERZ 13 MOD 5 3
3 WYBIERZ LOS() 0,20771444235715497
4 WYBIERZ AKTUALNĄ () 2022-06-04
5 WYBIERZ KURTĘ() 00:06:02
6 WYBIERZ TERAZ() 2022-06-04 00:06:43

I jak widać w powyższej tabeli, aby uzyskać aktualną datę i godzinę, wystarczy skorzystać z jednej z funkcji:

  • CURDATE()- bieżąca data;
  • CURTIME()- Obecny czas;
  • NOW()– aktualna data i godzina.

3.3 Grupowanie danych według roku i miesiąca

Przypomnijmy sobie naszą tabelę zadań z zadaniami dla pracowników. Spróbujmy pogrupować zadania z tej tabeli według lat. W tym celu używamy funkcji YEAR(), która zwraca rok z przekazanej jej daty.

Pierwsza wersja naszego zapytania będzie wyglądać następująco:

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    deadline
FROM task

Wynikiem tego zapytania będzie:

ID dowód pracownika nazwa rok termin ostateczny
1 1 Napraw błąd w interfejsie użytkownika 2022 2022-06-01
2 2 Napraw błąd w backendzie 2022 2022-06-15
3 5 Kup kawę 2022 2022-07-01
4 5 Kup kawę 2022 2022-08-01
5 5 Kup kawę 2022 2022-09-01
6 (ZERO) Posprzątaj biuro (ZERO) (ZERO)
7 4 Ciesz się życiem (ZERO) (ZERO)
8 6 Ciesz się życiem (ZERO) (ZERO)

Widzimy, że wszystkie wiersze mają ten sam rok, więc użyjmy dwóch pól - rok i miesiąc. Druga wersja naszego zapytania będzie wyglądać następująco:

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    MONTH(deadline) AS month,
    deadline
FROM task

Wynikiem tego zapytania będzie:

ID dowód pracownika nazwa rok miesiąc termin ostateczny
1 1 Napraw błąd w interfejsie użytkownika 2022 6 2022-06-01
2 2 Napraw błąd w backendzie 2022 6 2022-06-15
3 5 Kup kawę 2022 7 2022-07-01
4 5 Kup kawę 2022 8 2022-08-01
5 5 Kup kawę 2022 9 2022-09-01
6 (ZERO) Posprzątaj biuro (ZERO) (ZERO) (ZERO)
7 4 Ciesz się życiem (ZERO) (ZERO) (ZERO)
8 6 Ciesz się życiem (ZERO) (ZERO) (ZERO)

Nie powiem ci, jak grupować zadania według roku i miesiąca - już to przestudiowałeś: użyj operatora GROUP BY.