3.1 Lijst met functies voor het werken met datum en tijd
Datum en tijd zijn een van de meest voorkomende typen gegevens die in databases worden opgeslagen. Daarom is de lijst met functies om ermee te werken erg groot. Dit zijn de meest populaire:
# | Functie | Beschrijving |
---|---|---|
1 | CURDATE() | Retourneert de huidige datum |
2 | CURTIJD() | Retourneert de huidige tijd |
3 | NU(), LOKALETIJD() | Retourneert de huidige datum en huidige tijd |
4 | JAAR() | Retourneert jaar vanaf datum |
5 | MAAND() | Retourneert de maand vanaf een datum |
6 | DAG(), DAGVANMAAND() | Retourneert de dag van een datum |
7 | UUR() | Retourneert slechts enkele uren na tijd |
8 | MINUUT() | Kondigt minuten van tijd aan |
9 | SECONDE() | Retourneert seconden vanaf de tijd |
10 | DAGNAAM() | Retourneert de naam van de dag van de week: maandag, ... |
elf | MAANDNAAM() | Retourneert de naam van de maand: januari, ... |
12 | WEEK() | Retourneert de week vanaf een datum |
13 | WEEKDAG() | Retourneert het nummer van de dag van de week: maandag - 0, dinsdag - 1 |
14 | WEEKJAAR() | Retourneert het weeknummer van het jaar |
15 | DAG VAN DE WEEK() | Retourneert het nummer van de dag van de week: zondag - 1, maandag - 2 |
16 | DAG VAN JAAR() | Retourneert de dag van het jaar: 1-366 |
17 | DATUM() | Retourneert alleen de datum van een "datetime"-object |
18 | TOEVOEGEN() | Voegt dagen toe aan een datum |
19 | SUBDATUM() | Trekt dagen af van een datum |
20 | VOEG TIJD TOE() | Voegt tijd tot tijd toe |
21 | ONDERTIJD() | Trekt tijd af van tijd |
Ik heb de functies met opzet in kleine groepen gegroepeerd om het gemakkelijker te maken om te begrijpen hoe ermee te werken. Hieronder zullen we één functie uit elke groep bekijken.
Een volledige lijst met functies voor het werken met datum en tijd vindt u op de link: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 Functies oproepen
Trouwens, aangezien we zoveel functies aan het leren zijn, denk ik dat het nuttig is om te vermelden dat de operator SELECT
niet gebruikt hoeft te worden met FROM
. Het kan de waarde van elke uitdrukking retourneren. De algemene weergave hiervan wordt gegeven door de sjabloon:
SELECT expression
En als je een functie wilt aanroepen, moet je code schrijven zoals:
SELECT function(options)
Hieronder geef ik enkele voorbeelden van de werking van de operator SELECT
zonder gebruik te maken van tabellen:
# | Verzoek | Resultaat |
---|---|---|
1 | KIES 1+1 | 2 |
2 | KIES 13 MOD 5 | 3 |
3 | SELECTEER ASELECT() | 0.20771444235715497 |
4 | SELECTEER CURDATE() | 2022-06-04 |
5 | SELECTEER CURTIME() | 00:06:02 |
6 | SELECTEER NU() | 2022-06-04 00:06:43 |
En zoals u in de bovenstaande tabel kunt zien, hoeft u slechts een van de functies te gebruiken om de huidige datum en tijd te krijgen:
CURDATE()
- huidige datum;CURTIME()
- huidige tijd;NOW()
– huidige datum en tijd.
3.3 Gegevens groeperen op jaar en maand
Laten we onze takentabel met taken voor werknemers terughalen. Laten we proberen taken uit deze tabel te groeperen op jaar. Om dit te doen, gebruiken we de functie YEAR()
, die het jaar teruggeeft vanaf de datum die eraan is doorgegeven.
De eerste versie van onze query ziet er als volgt uit:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
Het resultaat van deze query zal zijn:
ID kaart | medewerker_id | naam | jaar | deadline |
---|---|---|---|---|
1 | 1 | Los een bug op de frontend op | 2022 | 01-06-2022 |
2 | 2 | Los een bug op de backend op | 2022 | 2022-06-15 |
3 | 5 | Koop koffie | 2022 | 01-07-2022 |
4 | 5 | Koop koffie | 2022 | 01-08-2022 |
5 | 5 | Koop koffie | 2022 | 01-09-2022 |
6 | (NUL) | Ruim het kantoor op | (NUL) | (NUL) |
7 | 4 | Geniet van het leven | (NUL) | (NUL) |
8 | 6 | Geniet van het leven | (NUL) | (NUL) |
We kunnen zien dat alle rijen hetzelfde jaar hebben, dus laten we twee velden gebruiken: jaar en maand. De tweede versie van onze query ziet er als volgt uit:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
Het resultaat van deze query zal zijn:
ID kaart | medewerker_id | naam | jaar | maand | deadline |
---|---|---|---|---|---|
1 | 1 | Los een bug op de frontend op | 2022 | 6 | 01-06-2022 |
2 | 2 | Los een bug op de backend op | 2022 | 6 | 2022-06-15 |
3 | 5 | Koop koffie | 2022 | 7 | 01-07-2022 |
4 | 5 | Koop koffie | 2022 | 8 | 01-08-2022 |
5 | 5 | Koop koffie | 2022 | 9 | 01-09-2022 |
6 | (NUL) | Ruim het kantoor op | (NUL) | (NUL) | (NUL) |
7 | 4 | Geniet van het leven | (NUL) | (NUL) | (NUL) |
8 | 6 | Geniet van het leven | (NUL) | (NUL) | (NUL) |
Ik zal je niet vertellen hoe je taken per jaar en maand moet groeperen - je hebt dit al bestudeerd: gebruik de operator GROUP BY
.
GO TO FULL VERSION