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 SELECT
nie 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 SELECT
bez 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
.
GO TO FULL VERSION