logo

MySQL dato og klokkeslæt funktioner

Håndtering dato og klokkeslæt data i MySQL er afgørende for mange databaseoperationer, især når det kommer til at håndtere tidsstempler, der planlægger opgaver eller genererer tidsbaseret. MySQL tilbyder en række dato- og tidsfunktioner, der hjælper brugere med at arbejde med datoværdier med at udføre beregninger og formatere dem efter behov.

Disse funktioner gør det muligt for udviklere at udføre beregninger at udtrække bestemte dele af en dato eller endda formatere output for bedre læsbarhed. I denne artikel vil vi udforske de mest brugte MySQL-datofunktioner, der forklarer deres syntaks, giver eksempler og guider dig gennem, hvordan du effektivt bruger dem

Forståelse af MySQL-dato- og tidsdatatyper

Når du arbejder med datoer i MySQL, kan det være vanskeligt for begyndere, især fordi formatet på datoen i databasen skal matche formatet på inputdata under indsættelse. I mange tilfælde, i stedet for blot at bruge en simpel dato, kan vi være nødt til at gemme både en dato og et klokkeslæt afhængigt af brugssituationen. Det er her DATETIME og TIMESTAMP datatyper kommer i spil.



MySQL giver følgende datatyper til lagring af dato- og tidsværdier:

1. DATO :

  • Format :YYYY-MM-DD
  • Bruges til kun at gemme datoen (år måned og dag) uden nogen tidskomponent.

2. DATOTIME :

  • Format :YYYY-MM-DD HH:MM:SS
  • Gemmer både datoen og klokkeslættet, hvilket gør det nyttigt, når du skal fange bestemte tidspunkter sammen med datoen.

3. TIDSSTIMPEL :

  • Format :YYYY-MM-DD HH:MM:SS
  • Svarende tilDATETIMEmenTIMESTAMPinkluderer også tidszoneunderstøttelse. Den opdaterer automatisk til det aktuelle tidsstempel, når en post ændres, hvilket gør den ideel til at spore ændringer af poster over tid.

4. ÅR :

  • Format :YYYYellerYY
  • Bruges til kun at gemme året, hvilket kan være nyttigt til applikationer, hvor kun året er nødvendigt, såsom at spore fødselsår eller regnskabsår.

MySQL dato og klokkeslæt funktioner

Lad os nu dykke ned i MySQL-datofunktionerne, som du kan bruge til at manipulere og forespørge om dato- og tidsdata effektivt.

1. NU()- Få aktuel dato og klokkeslæt

De NU() funktion henter den aktuelle dato og klokkeslæt ind ÅÅÅÅ-MM-DD TT:MI:SS format.

Forespørgsel:

SELECT NOW();  

Produktion:

nu metode output billede' title=

2. CURDATE() - Hent kun aktuel dato

Hvis vi kun har brug for den aktuelle dato uden den tidsdel, vi kan bruge CURDATE() som returnerer datoen ind YYYY-MM-DD format.

Forespørgsel:

SELECT CURDATE();  

Produktion: 

OUTPUT2' loading='lazy' title=

3. CURTIME() - Få kun aktuel tid

Funktionen CURTIME() returnerer den aktuelle tid i HH:MI:SS format ekskl. dato.

Forespørgsel:

SELECT CURTIME();  

Produktion: 

OUTPUT3' loading='lazy' title=

4. DATE() - Uddrag datodelen fra en DATETIME-værdi

DeDATE()funktion udtrækker kun datodelen fra enDATETIMEellerTIMESTAMPværdi kasserer tiden.

Eksempel: For et bord kaldet users :

Id Navn Fødselstid
4120Praksis1996-09-26 16:44:15.581

Forespørgsel:

SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Produktion:

Navn Fødselsdato
Praksis1996-09-26

5. EXTRACT() - Udtræk specifikke datodele

EXTRACT()bruges til at udtrække bestemte dele af en dato, såsom dag måned eller år. Denne funktion kan være særlig nyttig, når du analyserer eller sammenligner forskellige dele af en date. Flere enheder kan komme i betragtning men kun nogle bruges som f.eks MIKROSEKUND ANDET MINUT TIME DAG UGE MÅNED KVARTAL ÅR osv. Og 'dato' er et gyldigt datoudtryk.

.tostring java

Syntaks:

UDDRAG(enhed FRA dato);

Forespørgsel til at udtrække dag:

SELECT Name Extract(DAY FROM   
BirthTime) AS BirthDay FROM Test;

Produktion: 

Navn Fødselsdag
Praksis26

Forespørgsel til at udtrække år:

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

Produktion: 

Navn Fødselsår
Praksis1996

Forespørgsel for at udtrække sekunder:

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

Produktion:

Navn BirthSecond
Praksis581

6. DATE_ADD() - Tilføj intervaller til en dato

De DATE_ADD() funktionen giver dig mulighed for at tilføje tidsintervaller (f.eks. dage måneder år) til en dato ellerDATETIMEværdi.

Syntaks:

DATE_ADD(dato INTERVAL udtr type);

Eksempel: For nedenstående tabel med navnet ' Prøve '

Id Navn Fødselstid
4120Praksis1996-09-26 16:44:15.581

Forespørgsel til Tilføj 1 år til en dato

SELECT Name DATE_ADD(BirthTime INTERVAL   
1 YEAR) AS BirthTimeModified FROM Test;

Produktion:

Navn Fødselstidspunkt Ændret
Praksis1997-09-26 16:44:15.581

Forespørgsel om at tilføje 30 dage til en dato

SELECT Name DATE_ADD(BirthTime   
INTERVAL 30 DAY) AS BirthDayModified FROM Test;

Produktion:

Navn Fødselsdag Modificeret
Praksis1996-10-26 16:44:15.581

Forespørgsel om at tilføje 4 timer til en dato

SELECT Name DATE_ADD(BirthTime INTERVAL  
4 HOUR) AS BirthHourModified FROM Test;

Produktion: 

Navn BirthSecond
Praksis1996-10-26 20:44:15.581

7. DATEDIFF() - Find forskellen mellem to datoer

Denne funktion returnerer antallet af dage mellem to datoer. 

Syntaks:

DATODIFF(intervaldate1 dato2);

interval - minut/time/måned/år osv

dato1 & dato2- dato/tid udtryk

Forespørgsel til Find forskellen mellem to datoer

SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;  

Produktion: 

DatoDiff

8. DATE_FORMAT() - Formater dato og klokkeslæt

DATE_FORMAT() giver os mulighed for at formatere en DATO DATOTIME eller TIDSSTIMPEL værdi i et brugerdefineret format ved hjælp af pladsholdere.

Syntaks:

DATE_FORMAT(datoformat);

datoen er en gyldig dato, og formatet angiver outputformatet for datoen/klokkeslættet. De formater der kan bruges er:

  • %a-Forkortet ugedagsnavn (søn-lør)
  • %b-Forkortet månedsnavn (jan-dec)
  • %c-måned numerisk (0-12)
  • %D-dag i måneden med engelsk suffiks (0. 1. 2. 3.)
  • %d-dag i måneden numerisk (00-31)
  • %e-dag i måneden numerisk (0-31)
  • %f-mikrosekunder (000000-999999)
  • %H-time (00-23)
  • %h-time (01-12)
  • %I-time (01-12)
  • %i-minutter numerisk (00-59)
  • %j-dag i året (001-366)
  • %k-time (0-23)
  • %l-time (1-12)
  • %M-måneds navn (januar-december)
  • %m-måned numerisk (00-12)
  • %p-AM eller PM
  • %r-tid 12 timer (tt:mm: ss efterfulgt af AM eller PM)
  • %S-sekunder (00-59)
  • %s-sekunder (00-59)
  • %T-tid 24-timer (tt:mm: ss)
  • %U-Uge (00-53), hvor søndag er den første dag i ugen
  • %u-Uge (00-53), hvor mandag er den første dag i ugen
  • %V-Uge (01-53), hvor søndag er den første dag i ugen brugt med %X
  • %v-Uge (01-53), hvor mandag er den første dag i ugen brugt med %x
  • %W-Ugedag navn (søndag-lørdag)
  • %w-ugedag (0=søndag 6=lørdag)
  • %X-år for ugen, hvor søndag er den første dag i ugen fire cifre brugt med %V
  • %x-År for ugen, hvor mandag er den første dag i ugen, fire cifre brugt med %v
  • %Y-Year numeriske fire cifre
  • %y-Year numeriske to cifre

Forespørgsel om at formatere en dato

SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;

Produktion:

Formateret_dato
Torsdag den 10. april 2025

Bedste praksis for at arbejde med dato og tid i MySQL

1. Brug altid korrekte datoformater

Når du indsætter eller opdaterer datoer, skal du sørge for, at du følger MySQL's forventede formater (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Dette sikrer, at dine forespørgsler returnerer forventede resultater uden fejl.

2. Tidszoneovervejelser med TIMESTAMP

MensDATETIMEgemmer ikke tidszoneoplysningerTIMESTAMPgør. Hvis din applikation er tidszonefølsom (for eksempel i internationale applikationer), så overvej at brugeTIMESTAMPfor dato-tidsfelter, der skal tage højde for forskellige tidszoner.

3. Håndtering af datointervaller i forespørgsler

For at filtrere data baseret på datointervaller (f.eks. hentning af alle poster fra en bestemt måned eller et bestemt år), skal du sørge for at bruge korrekte datosammenligninger iWHEREklausul. Eksempel:

SELECT * FROM orders  
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';

4. Ydelsesovervejelser

Når du arbejder med dato- og tidsfunktioner, især i store datasæt, skal du være opmærksom på indvirkningen på ydeevnen. Undgå at bruge funktioner som f.eksNOW()ellerCURDATE()iWHEREklausul, da de kan bremse forespørgsler, når de håndterer store tabeller.

Konklusion

MySQL's dato og klokkeslæt funktioner er væsentlige værktøjer til håndtering og manipulere tidsmæssige data i dine databaser. Ved at mestre funktioner somNOW() CURDATE() DATE_ADD() DATEDIFF()ogDATE_FORMAT()du nemt kan arbejde med tidsbaserede beregninger sammenligninger og formater . Nøglen til effektivt at bruge disse funktioner er at forstå deres syntaks, hvornår og hvordan man bruger dem og deres præstationsimplikationer i store datasæt. Med denne viden vil du være i stand til at bygge mere effektive præcise og skalerbare forespørgsler til alle dine dato- og tidsrelaterede behov i MySQL.

Opret quiz