logo

MySQL dato og klokkeslett funksjoner

Håndtering dato og klokkeslett data i MySQL er avgjørende for mange databaseoperasjoner, spesielt når det gjelder å håndtere tidsstempler for å planlegge oppgaver eller generere tidsbasert. MySQL tilbyr en rekke dato- og klokkeslettfunksjoner som hjelper brukere med å jobbe med datoverdier med å utføre beregninger og formatere dem etter behov.

Disse funksjonene lar utviklere utføre beregninger trekke ut bestemte deler av en dato eller til og med formatere utdataene for bedre lesbarhet. I denne artikkelen vil vi utforske de mest brukte MySQL-datofunksjonene forklare syntaksen deres gi eksempler og veilede deg gjennom hvordan du effektivt bruker dem

Forstå MySQL dato- og klokkeslettdatatyper

Når du arbeider med datoer i MySQL kan det være vanskelig for nybegynnere, spesielt fordi formatet på datoen i databasen må samsvare med formatet på inndataene under innsetting. I mange tilfeller, i stedet for bare å bruke en enkel dato, kan det hende vi må lagre både dato og klokkeslett, avhengig av brukstilfellet. Det er her DATETIME og TIMESTAMP datatyper spiller inn.



MySQL gir følgende datatyper for lagring av dato- og klokkeslettverdier:

1. DATO :

  • Format :YYYY-MM-DD
  • Brukes til å lagre kun dato (år måned og dag) uten noen tidskomponent.

2. DATETIME :

  • Format :YYYY-MM-DD HH:MM:SS
  • Lagrer både datoen og klokkeslettet, noe som gjør det nyttig når du trenger å fange bestemte tider sammen med datoen.

3. TIDSSTIMPEL :

  • Format :YYYY-MM-DD HH:MM:SS
  • Ligner påDATETIMEmenTIMESTAMPinkluderer også tidssonestøtte. Den oppdateres automatisk til gjeldende tidsstempel når en post endres, noe som gjør den ideell for å spore endringer i poster over tid.

4. ÅR :

  • Format :YYYYellerYY
  • Brukes for å lagre bare året, noe som kan være nyttig for applikasjoner der bare året er nødvendig, for eksempel sporing av fødselsår eller regnskapsår.

MySQL dato og klokkeslett funksjoner

La oss nå dykke ned i MySQL-datofunksjonene som du kan bruke til å manipulere og søke etter dato- og klokkeslettdata effektivt.

1. NÅ()- Få gjeldende dato og klokkeslett

De NÅ() funksjonen henter gjeldende dato og klokkeslett inn ÅÅÅÅ-MM-DD TT:MI:SS format.

Spørsmål:

SELECT NOW();  

Produksjon:

nå metode utdatabilde' title=

2. CURDATE() – Få kun gjeldende dato

Hvis vi bare trenger gjeldende dato uten tidsdelen kan vi bruke CURDATE() som returnerer datoen inn YYYY-MM-DD format.

Spørsmål:

SELECT CURDATE();  

Produksjon: 

OUTPUT2' loading='lazy' title=

3. CURTIME() - Få kun gjeldende tid

CURTIME()-funksjonen returnerer gjeldende tid inn HH:MI:SS format unntatt dato.

Spørsmål:

SELECT CURTIME();  

Produksjon: 

OUTPUT3' loading='lazy' title=

4. DATE() - Trekk ut datodelen fra en DATETIME-verdi

DeDATE()funksjon trekker bare ut datodelen fra enDATETIMEellerTIMESTAMPverdi forkaste tiden.

Eksempel: For et bord kalt users :

ID Navn Fødselstid
4120Øv1996-09-26 16:44:15.581

Spørsmål:

SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Produksjon:

Navn Fødselsdato
Øv1996-09-26

5. EXTRACT() - Trekk ut spesifikke datodeler

EXTRACT()brukes til å trekke ut bestemte deler av en dato, for eksempel dag, måned eller år. Denne funksjonen kan være spesielt nyttig når du analyserer eller sammenligner ulike deler av en date. Flere enheter kan vurderes men kun noen brukes som f.eks MIKROSEKUND ANDRE MINUTT TIME DAG UKE MÅNED KVARTAL ÅR osv. Og "dato" er et gyldig datouttrykk.

forskjell i python

Syntaks:

EXTRACT(enhet FRA dato);

Spørsmål for å trekke ut dag:

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

Produksjon: 

Navn Fødselsdag
Øv26

Spørsmål for å trekke ut år:

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

Produksjon: 

Navn Fødselsår
Øv1996

Spørsmål for å trekke ut sekunder:

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

Produksjon:

Navn BirthSecond
Øv581

6. DATE_ADD() - Legg til intervaller til en dato

De DATE_ADD() funksjonen lar deg legge til tidsintervaller (f.eks. dager måneder år) til en dato ellerDATETIMEverdi.

Syntaks:

DATE_ADD(dato INTERVAL uttr type);

Eksempel: For tabellen nedenfor kalt ' Test '

ID Navn Fødselstid
4120Øv1996-09-26 16:44:15.581

Spørsmål til Legg til 1 år til en dato

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

Produksjon:

Navn Modifisert fødselstid
Øv1997-09-26 16:44:15.581

Spørsmål for å legge til 30 dager til en dato

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

Produksjon:

Navn Birthday Modified
Øv1996-10-26 16:44:15.581

Spørsmål for å legge til 4 timer til en dato

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

Produksjon: 

Navn BirthSecond
Øv1996-10-26 20:44:15.581

7. DATEDIFF() – Finn forskjellen mellom to datoer

Denne funksjonen returnerer antall dager mellom to datoer. 

Syntaks:

DATODIFF(intervaldat1 dato2);

intervall - minutt/time/måned/år osv

dato1 og dato2- dato/tidsuttrykk

Spørsmål til Finn forskjellen mellom to datoer

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

Produksjon: 

DatoDiff

8. DATE_FORMAT() - Format dato og klokkeslett

DATE_FORMAT() lar oss formatere en DATO DATETIME eller TIDSSTIMPEL verdi inn i et tilpasset format ved hjelp av plassholdere.

Syntaks:

DATO_FORMAT(datoformat);

datoen er en gyldig dato og formatet spesifiserer utdataformatet for datoen/klokkeslettet. Formatene som kan brukes er:

  • %a-Forkortet ukedagnavn (søn-lør)
  • %b-Forkortet månedsnavn (jan-dese)
  • %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-desember)
  • %m-måned numerisk (00-12)
  • %p-AM eller PM
  • %r-Tid 12-timer (tt:mm: ss etterfulgt av AM eller PM)
  • %S-sekunder (00-59)
  • %s-sekunder (00-59)
  • %T-tid 24-timer (tt:mm: ss)
  • %U-Uke (00-53) der søndag er den første dagen i uken
  • %u-Uke (00-53) der mandag er den første dagen i uken
  • %V-Uke (01-53) der søndag er den første dagen i uken brukt med %X
  • %v-Uke (01-53) hvor mandag er den første dagen i uken brukt med %x
  • %W-Ukedag navn (søndag-lørdag)
  • %w-ukedag (0=søndag 6=lørdag)
  • %X-år for uken der søndag er den første dagen i uken fire sifre brukt med %V
  • %x-år for uken der mandag er den første dagen i uken fire sifre brukt med %v
  • %Y-Year numeriske fire sifre
  • %y-Year numeriske to sifre

Spørsmål for å formatere en dato

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

Produksjon:

Formatert_dato
Torsdag 10. april 2025

Beste praksis for arbeid med dato og klokkeslett i MySQL

1. Bruk alltid riktige datoformater

Når du setter inn eller oppdaterer datoer, sørg for at du følger MySQLs forventede formater (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Dette sikrer at søkene dine returnerer forventede resultater uten feil.

2. Tidssonehensyn med TIMESTAMP

MensDATETIMElagrer ikke tidssoneinformasjonTIMESTAMPgjør. Hvis applikasjonen din er tidssonesensitiv (for eksempel i internasjonale applikasjoner), bør du vurdere å brukeTIMESTAMPfor dato- og klokkeslettfelt som må ta hensyn til forskjellige tidssoner.

3. Håndtering av datoperioder i spørringer

For filtrering av data basert på datoperioder (f.eks. henting av alle poster fra en bestemt måned eller år), sørg for at du bruker riktige datosammenligninger iWHEREklausul. Eksempel:

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

4. Ytelseshensyn

Når du arbeider med dato- og klokkeslettfunksjoner, spesielt i store datasett, vær oppmerksom på effekten på ytelsen. Unngå å bruke funksjoner somNOW()ellerCURDATE()iWHEREklausulen da de kan bremse forespørsler når de arbeider med store tabeller.

Konklusjon

MySQLs dato- og klokkeslettfunksjoner er viktige verktøy for håndtering og manipulere tidsmessige data i databasene dine. Ved å mestre funksjoner somNOW() CURDATE() DATE_ADD() DATEDIFF()ogDATE_FORMAT()du enkelt kan jobbe med tidsbaserte beregninger sammenligninger og formater . Nøkkelen til effektiv bruk av disse funksjonene er å forstå deres syntaks når og hvordan de skal brukes og deres ytelsesimplikasjoner i store datasett. Med denne kunnskapen vil du kunne bygge mer effektive nøyaktige og skalerbare spørringer for alle dine dato- og tidsrelaterte behov i MySQL.

Lag quiz