3.1 Liste over funksjoner for arbeid med dato og klokkeslett
Dato og klokkeslett er en av de vanligste typene data som er lagret i databaser. Derfor er listen over funksjoner for å jobbe med dem veldig stor. Her er de mest populære:
# | Funksjon | Beskrivelse |
---|---|---|
1 | CURDATE() | Returnerer gjeldende dato |
2 | CURTIME() | Returnerer gjeldende tid |
3 | NÅ(), LOKALTID() | Returnerer gjeldende dato og gjeldende klokkeslett |
4 | ÅR() | Returnerer år fra dato |
5 | MÅNED() | Returnerer måneden fra en dato |
6 | DAY(), DAYOFMONTH() | Returnerer dagen fra en dato |
7 | TIME() | Returnerer kun timer fra klokkeslett |
8 | MINUTT() | Meddeler minutter fra tid |
9 | SEKUND() | Returnerer sekunder fra tid |
10 | DAYNAME() | Returnerer navnet på ukedagen: mandag, ... |
elleve | MONTHNAME() | Returnerer månedens navn: januar, ... |
12 | UKE() | Returnerer uken fra en dato |
1. 3 | UKEDAG() | Returnerer nummeret på ukedagen: mandag - 0, tirsdag - 1 |
14 | UKEÅR() | Returnerer årets ukenummer |
15 | UKEDAG() | Returnerer nummeret på ukedagen: søndag - 1, mandag - 2 |
16 | DAYOFYEAR() | Returnerer dagen i året: 1-366 |
17 | DATO() | Returnerer bare datoen fra et "datetime"-objekt |
18 | ADDDATE() | Legger til dager til en dato |
19 | SUBDATE() | Trekker dager fra en dato |
20 | ADDTIME() | Legger til tid til annen |
21 | SUBTIME() | Trekker fra tid fra tid |
Jeg har bevisst gruppert funksjonene i små grupper for å gjøre det lettere å forstå hvordan man jobber med dem. Nedenfor vil vi vurdere én funksjon fra hver gruppe.
Du finner en fullstendig liste over funksjoner for arbeid med dato og klokkeslett på lenken: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 Ringefunksjoner
Forresten, siden vi lærer så mange funksjoner, tror jeg det er nyttig å nevne at operatøren SELECT
ikke trenger å brukes med FROM
. Den kan returnere verdien av ethvert uttrykk. Det generelle synet er gitt av malen:
SELECT expression
Og hvis du vil kalle en funksjon, må du skrive kode som:
SELECT function(options)
Nedenfor vil jeg gi noen eksempler på driften av operatøren SELECT
uten bruk av tabeller:
# | Be om | Resultat |
---|---|---|
1 | VELG 1+1 | 2 |
2 | VELG 13 MOD 5 | 3 |
3 | VELG RAND() | 0,207714444235715497 |
4 | VELG CURDATE() | 2022-06-04 |
5 | VELG KURTID() | 00:06:02 |
6 | VELG NÅ() | 04-06-2022 00:06:43 |
Og, som du kan se, i tabellen ovenfor, for å få gjeldende dato og klokkeslett, trenger du bare å bruke en av funksjonene:
CURDATE()
- dagens dato;CURTIME()
- nåværende tid;NOW()
– gjeldende dato og klokkeslett.
3.3 Gruppering av data etter år og måned
La oss minne om oppgavetabellen vår med oppgaver for ansatte. La oss prøve å gruppere oppgaver fra denne tabellen etter år. For å gjøre dette bruker vi funksjonen YEAR()
, som returnerer året fra datoen som ble sendt til den.
Den første versjonen av søket vårt vil se slik ut:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
Resultatet av denne spørringen vil være:
id | Ansatt ID | Navn | år | frist |
---|---|---|---|---|
1 | 1 | Rett opp en feil på frontend | 2022 | 2022-06-01 |
2 | 2 | Rett opp en feil på backend | 2022 | 2022-06-15 |
3 | 5 | Kjøp kaffe | 2022 | 2022-07-01 |
4 | 5 | Kjøp kaffe | 2022 | 2022-08-01 |
5 | 5 | Kjøp kaffe | 2022 | 2022-09-01 |
6 | (NULL) | Rydd opp på kontoret | (NULL) | (NULL) |
7 | 4 | Nyt livet | (NULL) | (NULL) |
8 | 6 | Nyt livet | (NULL) | (NULL) |
Vi kan se at alle rader har samme årstall, så la oss bruke to felt – år og måned. Den andre versjonen av søket vårt vil se slik ut:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
Resultatet av denne spørringen vil være:
id | Ansatt ID | Navn | år | måned | frist |
---|---|---|---|---|---|
1 | 1 | Rett opp en feil på frontend | 2022 | 6 | 2022-06-01 |
2 | 2 | Rett opp en feil på backend | 2022 | 6 | 2022-06-15 |
3 | 5 | Kjøp kaffe | 2022 | 7 | 2022-07-01 |
4 | 5 | Kjøp kaffe | 2022 | 8 | 2022-08-01 |
5 | 5 | Kjøp kaffe | 2022 | 9 | 2022-09-01 |
6 | (NULL) | Rydd opp på kontoret | (NULL) | (NULL) | (NULL) |
7 | 4 | Nyt livet | (NULL) | (NULL) | (NULL) |
8 | 6 | Nyt livet | (NULL) | (NULL) | (NULL) |
Jeg vil ikke fortelle deg hvordan du grupperer oppgaver etter år og måned - du har allerede studert dette: bruk operatøren GROUP BY
.