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