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 SELECTikke 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 SELECTuten 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.