logo

MySQL datum- en tijdfuncties

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 metDATETIMEMaarTIMESTAMPomvat 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:

nu methode uitvoerafbeelding' title=

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: 

UITGANG2' loading='lazy' title=

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: 

UITGANG3' loading='lazy' title=

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
4120Oefening26-09-1996 16:44:15.581

Vraag:

Java vervangt alles
SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Uitgang:

Naam Geboortedatum
Oefening26/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
Oefening26

Zoekopdracht om jaartal te extraheren:

SELECT Name Extract(YEAR FROM BirthTime)  
AS BirthYear FROM Test;

Uitgang: 

Naam Geboortejaar
Oefening1996

Query om seconden te extraheren:

SELECT Name Extract(SECOND FROM   
BirthTime) AS BirthSecond FROM Test;

Uitgang:

Naam GeboorteTweede
Oefening581

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
4120Oefening26-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
Oefening26-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
Oefening26/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
Oefening26/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.

Quiz maken