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:

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:

3. CURTIME() - Få kun gjeldende tid
CURTIME()-funksjonen returnerer gjeldende tid inn HH:MI:SS format unntatt dato.
Spørsmål:
SELECT CURTIME();
Produksjon:

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 | Øv | 1996-09-26 16:44:15.581 |
Spørsmål:
SELECT Name DATE(BirthTime)
AS BirthDate FROM Test;
Produksjon:
| Navn | Fødselsdato |
|---|---|
| Øv | 1996-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 |
|---|---|
| Øv | 26 |
Spørsmål for å trekke ut år:
SELECT Name Extract(YEAR FROM BirthTime)
AS BirthYear FROM Test;
Produksjon:
| Navn | Fødselsår |
|---|---|
| Øv | 1996 |
Spørsmål for å trekke ut sekunder:
SELECT Name Extract(SECOND FROM
BirthTime) AS BirthSecond FROM Test;
Produksjon:
| Navn | BirthSecond |
|---|---|
| Øv | 581 |
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 | Øv | 1996-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 |
|---|---|
| Øv | 1997-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 |
|---|---|
| Øv | 1996-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 |
|---|---|
| Øv | 1996-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.