Behandeling datum en tijd gegevens in MySQL zijn essentieel voor veel databasebewerkingen, vooral als het gaat om het verwerken van tijdstempels, het plannen van taken of het genereren van tijdgebaseerd. MySQL biedt een verscheidenheid aan datum- en tijdfuncties waarmee gebruikers met datumwaarden kunnen werken, berekeningen kunnen uitvoeren en deze indien nodig kunnen opmaken.
Met deze functies kunnen ontwikkelaars berekeningen uitvoeren, specifieke delen van een datum extraheren of zelfs de uitvoer opmaken voor een betere leesbaarheid. In dit artikel zullen we de meest gebruikte MySQL-datumfuncties verkennen, hun syntaxis uitleggen, voorbeelden geven en u laten zien hoe u ze effectief kunt gebruiken
MySQL-gegevenstypen voor datum en tijd begrijpen
Bij het werken met datums in MySQL kan het lastig zijn voor beginners, vooral omdat het formaat van de datum in de database moet overeenkomen met het formaat van de invoergegevens tijdens het invoegen. In veel gevallen moeten we, in plaats van alleen een eenvoudige datum te gebruiken, zowel een datum als een tijd opslaan, afhankelijk van het gebruiksscenario. Dit is waar de DATETIME En TIMESTAMP datatypen spelen een rol.
MySQL biedt de volgende gegevenstypen voor het opslaan van datum- en tijdwaarden:
1. DATUM :
- Formaat :
YYYY-MM-DD - Wordt gebruikt om alleen de datum (jaar, maand en dag) op te slaan, zonder enige tijdcomponent.
2. DATUMTIJD :
- Formaat :
YYYY-MM-DD HH:MM:SS - Slaat zowel de datum als de tijd op, wat handig is als u naast de datum ook specifieke tijden wilt vastleggen.
3. TIJDSTEMPEL :
- Formaat :
YYYY-MM-DD HH:MM:SS - Vergelijkbaar met
DATETIMEMaarTIMESTAMPomvat ook tijdzone-ondersteuning. Het wordt automatisch bijgewerkt naar de huidige tijdstempel wanneer een record wordt gewijzigd, waardoor het ideaal is voor het bijhouden van wijzigingen in records in de loop van de tijd.
4. JAAR :
- Formaat :
YYYYofYY - Wordt gebruikt om alleen het jaar op te slaan, wat handig kan zijn voor toepassingen waarbij alleen het jaar nodig is, zoals het bijhouden van geboortejaren of fiscale jaren.
MySQL datum- en tijdfuncties
Laten we nu eens kijken naar de MySQL-datumfuncties die u kunt gebruiken om datum- en tijdgegevens effectief te manipuleren en op te vragen.
1. NU() - Ontvang de huidige datum en tijd
De NU() functie haalt de huidige datum en tijd op JJJJ-MM-DD UU:MI:SS formaat.
Vraag:
SELECT NOW();
Uitgang:

2. CURDATE() - Alleen huidige datum ophalen
Als we alleen de huidige datum nodig hebben zonder het tijdgedeelte dat we kunnen gebruiken CURDATE() die de datum retourneert YYYY-MM-DD formaat.
Vraag:
SELECT CURDATE();
Uitgang:

3. CURTIME() - Krijg alleen de huidige tijd
De functie CURTIME() retourneert de huidige tijd in HH:MI:SS formaat exclusief de datum.
Vraag:
SELECT CURTIME();
Uitgang:

4. DATE() - Extraheer het datumgedeelte uit een DATETIME-waarde
DeDATE()functie extraheert alleen het datumgedeelte uit aDATETIMEofTIMESTAMPwaarde het weggooien van de tijd.
Voorbeeld: Voor een tafel genaamd users :
| Identiteitskaart | Naam | Geboortetijd |
|---|---|---|
| 4120 | Oefening | 26-09-1996 16:44:15.581 |
Vraag:
Java vervangt alles
SELECT Name DATE(BirthTime)
AS BirthDate FROM Test;
Uitgang:
| Naam | Geboortedatum |
|---|---|
| Oefening | 26/09/1996 |
5. EXTRACT() - Specifieke datumdelen extraheren
EXTRACT()wordt gebruikt om specifieke delen van een datum te extraheren, zoals de dagmaand of het jaar. Deze functie kan vooral handig zijn bij het analyseren of vergelijken van verschillende delen van een datum. Er kunnen meerdere eenheden worden overwogen, maar er worden er slechts enkele gebruikt, zoals MICROSECONDE TWEEDE MINUUT UUR DAG WEEK MAAND KWARTAAL enz. En 'datum' is een geldige datumexpressie.
Syntaxis:
EXTRACT(eenheid VAN datum);
Vraag om dag te extraheren:
SELECT Name Extract(DAY FROM
BirthTime) AS BirthDay FROM Test;
Uitgang:
| Naam | Verjaardag |
|---|---|
| Oefening | 26 |
Zoekopdracht om jaartal te extraheren:
SELECT Name Extract(YEAR FROM BirthTime)
AS BirthYear FROM Test;
Uitgang:
| Naam | Geboortejaar |
|---|---|
| Oefening | 1996 |
Query om seconden te extraheren:
SELECT Name Extract(SECOND FROM
BirthTime) AS BirthSecond FROM Test;
Uitgang:
| Naam | GeboorteTweede |
|---|---|
| Oefening | 581 |
6. DATE_ADD() - Voeg intervallen toe aan een datum
De DATE_ADD() Met de functie kunt u tijdsintervallen (bijvoorbeeld dagen maanden jaren) toevoegen aan een datum ofDATETIMEwaarde.
machine learning en typen
Syntaxis:
DATE_ADD(datum INTERVAL expr-type);
Voorbeeld: Voor de onderstaande tabel met de naam ' Test '
| Identiteitskaart | Naam | Geboortetijd |
|---|---|---|
| 4120 | Oefening | 26-09-1996 16:44:15.581 |
Vraag naar Voeg 1 jaar toe aan een datum
SELECT Name DATE_ADD(BirthTime INTERVAL
1 YEAR) AS BirthTimeModified FROM Test;
Uitgang:
| Naam | GeboortetijdGewijzigd |
|---|---|
| Oefening | 26-09-1997 16:44:15.581 |
Query om 30 dagen aan een datum toe te voegen
SELECT Name DATE_ADD(BirthTime
INTERVAL 30 DAY) AS BirthDayModified FROM Test;
Uitgang:
| Naam | GeboortedagGewijzigd |
|---|---|
| Oefening | 26/10/1996 16:44:15.581 |
Vraag om 4 uur aan een datum toe te voegen
SELECT Name DATE_ADD(BirthTime INTERVAL
4 HOUR) AS BirthHourModified FROM Test;
Uitgang:
| Naam | GeboorteTweede |
|---|---|
| Oefening | 26/10/1996 20:44:15.581 |
7. DATEDIFF() – Zoek het verschil tussen twee datums
Deze functie retourneert het aantal dagen tussen twee datums.
Syntaxis:
DATEDIFF(intervaldatum1 datum2);
interval - minuut/uur/maand/jaaretc
datum1 & datum2- datum/tijd-expressie
Vraag naar Zoek het verschil tussen twee datums
SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;
Uitgang:
| DatumVerschil |
|---|
8. DATE_FORMAT() - Foramt datum en tijd
Met DATE_FORMAT() kunnen we een DATUM DATUMTIJD of TIJDSTEMPEL waarde omzetten in een aangepast formaat met behulp van tijdelijke aanduidingen.
Syntaxis:
DATE_FORMAT(datumnotatie);
de datum is een geldige datum en het formaat specificeert het uitvoerformaat voor de datum/tijd. De formaten die gebruikt kunnen worden zijn:
- %a - Verkorte naam van de weekdag (zon-za)
- %b - Verkorte naam van de maand (januari-dec)
- %c-Maand numeriek (0-12)
- %D-dag van de maand met Engels achtervoegsel (0e 1e 2e 3e)
- %d-Dag van de maand numeriek (00-31)
- %e-Dag van de maand numeriek (0-31)
- %f-microseconden (000000-999999)
- %H-uur (00-23)
- %u-uur (01-12)
- %I-uur (01-12)
- %i-minuten numeriek (00-59)
- %j-Dag van het jaar (001-366)
- %k-uur (0-23)
- %l-uur (1-12)
- %M-Maandnaam (januari-december)
- %m-Maand numeriek (00-12)
- %p-AM of PM
- %r-Tijd 12 uur (uu:mm: ss gevolgd door AM of PM)
- %S-seconden (00-59)
- %s-seconden (00-59)
- %T-tijd 24 uur (uu:mm: ss)
- %U-Week (00-53) waarbij zondag de eerste dag van de week is
- %u-Week (00-53) waarbij maandag de eerste dag van de week is
- %V-Week (01-53) waarbij zondag de eerste dag van de week is, gebruikt met %X
- %v-Week (01-53) waarbij maandag de eerste dag van de week is, gebruikt met %x
- %W-Weekdagnaam (zondag-zaterdag)
- %w-Dag van de week (0=zondag 6=zaterdag)
- %X-Jaar voor de week waarin zondag de eerste dag van de week is, vier cijfers gebruikt met %V
- %x-Jaar voor de week waarin maandag de eerste dag van de week is, vier cijfers gebruikt met %v
- %Y-Jaar numeriek vier cijfers
- %y-Jaar numeriek twee cijfers
Vraag om een datum op te maken
SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;Uitgang:
gemiddeld versus gemiddeld
| Opgemaakte_datum |
|---|
| Donderdag 10 april 2025 |
Best practices voor het werken met datum en tijd in MySQL
1. Gebruik altijd de juiste datumformaten
Zorg er bij het invoegen of bijwerken van datums voor dat u de verwachte formaten van MySQL volgt (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Dit zorgt ervoor dat uw zoekopdrachten de verwachte resultaten zonder fouten opleveren.
2. Tijdzone-overwegingen met TIMESTAMP
TerwijlDATETIMEslaat geen tijdzone-informatie opTIMESTAMPdoet. Als uw applicatie tijdzonegevoelig is (bijvoorbeeld in internationale applicaties), overweeg dan het gebruik ervanTIMESTAMPvoor datum-tijdvelden die rekening moeten houden met verschillende tijdzones.
3. Omgaan met datumbereiken in query's
Als u gegevens wilt filteren op basis van datumbereiken (bijvoorbeeld het ophalen van alle records van een specifieke maand of een specifiek jaar), zorg er dan voor dat u de juiste datumvergelijkingen gebruikt in deWHEREclausule. Voorbeeld:
SELECT * FROM orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';
4. Prestatieoverwegingen
Houd bij het werken met datum- en tijdfuncties, vooral in grote datasets, rekening met de impact op de prestaties. Vermijd het gebruik van functies zoalsNOW()ofCURDATE()in deWHERE-clausule omdat ze query's kunnen vertragen bij het omgaan met grote tabellen.
Conclusie
MySQL's datum- en tijdfuncties zijn essentiële hulpmiddelen voor afhandeling En manipuleren tijdelijke gegevens binnen uw databases. Door het beheersen van functies zoalsNOW() CURDATE() DATE_ADD() DATEDIFF()EnDATE_FORMAT()waar je gemakkelijk mee kunt werken tijdgebaseerde berekeningen vergelijkingen En formaten . De sleutel tot het effectief gebruiken van deze functies is het begrijpen van hun syntaxis, wanneer en hoe ze moeten worden gebruikt, en hun implicaties voor de prestaties in grote datasets. Met deze kennis kunt u efficiëntere, nauwkeurige en schaalbare queries bouwen voor al uw datum- en tijdgerelateerde behoeften in MySQL.