logo

MySQL datum och tid funktioner

Hantering datum och tid data i MySQL är avgörande för många databasoperationer, särskilt när det gäller att hantera tidsstämplar som schemalägger uppgifter eller genererar tidsbaserat. MySQL tillhandahåller en mängd olika datum- och tidsfunktioner som hjälper användare att arbeta med datumvärden att utföra beräkningar och formatera dem efter behov.

Dessa funktioner tillåter utvecklare att utföra beräkningar extrahera specifika delar av ett datum eller till och med formatera utdata för bättre läsbarhet. I den här artikeln kommer vi att utforska de vanligaste MySQL-datumfunktionerna förklara deras syntax ge exempel och gå igenom hur du effektivt använder dem

Förstå MySQL datum- och tidsdatatyper

När man arbetar med datum i MySQL kan det vara knepigt för nybörjare, särskilt eftersom formatet på datumet i databasen måste matcha formatet på indata under infogning. I många fall istället för att bara använda ett enkelt datum kan vi behöva lagra både datum och tid beroende på användningsfallet. Det är här DATETIME och TIMESTAMP datatyper kommer in i bilden.



arraylist i java sortering

MySQL tillhandahåller följande datatyper för att lagra datum- och tidsvärden:

1. DATUM :

  • Formatera :YYYY-MM-DD
  • Används för att endast lagra datum (år månad och dag) utan någon tidskomponent.

2. DATETIME :

  • Formatera :YYYY-MM-DD HH:MM:SS
  • Lagrar både datum och tid vilket gör det användbart när du behöver fånga specifika tider tillsammans med datumet.

3. TIDSTÄMPEL :

  • Formatera :YYYY-MM-DD HH:MM:SS
  • LiknarDATETIMEmenTIMESTAMPinkluderar även tidszonsstöd. Den uppdateras automatiskt till den aktuella tidsstämpeln när en post ändras, vilket gör den idealisk för att spåra ändringar av poster över tid.

4. ÅR :

  • Formatera :YYYYellerYY
  • Används för att lagra bara året vilket kan vara användbart för applikationer där endast året behövs, som att spåra födelseår eller räkenskapsår.

MySQL datum och tid funktioner

Låt oss nu dyka in i MySQL-datumfunktionerna som du kan använda för att manipulera och fråga datum- och tidsdata effektivt.

1. NOW()- Hämta aktuellt datum och tid

De NU() funktionen hämtar aktuellt datum och tid i ÅÅÅÅ-MM-DD TT:MI:SS formatera.

Fråga:

SELECT NOW();  

Produktion:

nu metoden utdatabild' title=

2. CURDATE() - Hämta endast aktuellt datum

Om vi ​​bara behöver det aktuella datumet utan tidsdelen kan vi använda CURDATE() som returnerar datumet in YYYY-MM-DD formatera.

Fråga:

SELECT CURDATE();  

Produktion: 

UTGÅNG2' loading='lazy' title=

3. CURTIME() - Hämta endast aktuell tid

Funktionen CURTIME() returnerar den aktuella tiden in HH:MI:SS format exklusive datum.

Fråga:

SELECT CURTIME();  

Produktion: 

UTGÅNG3' loading='lazy' title=

4. DATE() - Extrahera datumdelen från ett DATETIME-värde

DeDATE()funktion extraherar endast datumdelen från enDATETIMEellerTIMESTAMPvärde förkasta tiden.

Exempel: För ett bord som heter users :

Id Namn Födelsetid
4120Öva1996-09-26 16:44:15.581

Fråga:

SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Produktion:

Namn Födelsedatum
Öva1996-09-26

5. EXTRACT() - Extrahera specifika datumdelar

EXTRACT()används för att extrahera specifika delar av ett datum som dag månad eller år. Denna funktion kan vara särskilt användbar när du analyserar eller jämför olika delar av ett datum. Flera enheter kan komma i fråga men endast några används som t.ex MIKROSEKUND ANDRA MINUTEN TIMMAR DAG VECKA MÅNAD KVARTAL ÅR osv. Och 'datum' är ett giltigt datumuttryck.

Syntax:

EXTRACT(enhet FRÅN datum);

Fråga att extrahera dag:

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

Produktion: 

Namn Födelsedag
Öva26

Fråga att extrahera år:

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

Produktion: 

Namn Födelseår
Öva1996

Fråga för att extrahera sekunder:

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

Produktion:

Namn BirthSecond
Öva581

6. DATE_ADD() - Lägg till intervall till ett datum

De DATE_ADD() funktionen låter dig lägga till tidsintervall (t.ex. dagar månader år) till ett datum ellerDATETIMEvärde.

Syntax:

DATE_ADD(datum INTERVAL expr typ);

Exempel: För tabellen nedan med namnet ' Testa '

Id Namn Födelsetid
4120Öva1996-09-26 16:44:15.581

Fråga till Lägg till 1 år till ett datum

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

Produktion:

Namn Födelsetid Modifierad
Öva1997-09-26 16:44:15.581

Fråga för att lägga till 30 dagar till ett datum

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

Produktion:

sträng concat java
Namn Födelsedag Modifierad
Öva1996-10-26 16:44:15.581

Fråga om att lägga till 4 timmar till ett datum

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

Produktion: 

Namn BirthSecond
Öva1996-10-26 20:44:15.581

7. DATEDIFF() – Hitta skillnaden mellan två datum

Denna funktion returnerar antalet dagar mellan två datum. 

Syntax:

DATUMDIFF(intervaldatum1 datum2);

intervall - minut/timme/månad/år etc

datum1 & datum2- datum/tid uttryck

Fråga till Hitta skillnaden mellan två datum

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

Produktion: 

DateDiff

8. DATE_FORMAT() - Format datum och tid

DATE_FORMAT() tillåter oss att formatera en DATUM DATETIME eller TIDSTÄMPEL värde till ett anpassat format med platshållare.

Syntax:

DATUM_FORMAT(datumformat);

datumet är ett giltigt datum och formatet anger utdataformatet för datumet/tiden. De format som kan användas är:

  • %a-förkortat veckodagsnamn (sön-lör)
  • %b-Förkortat månadsnamn (jan-dec)
  • %c-månad numerisk (0-12)
  • %D-dag i månaden med engelskt suffix (0:a 1:a 2:a 3:e)
  • %d-dag i månaden numerisk (00-31)
  • %e-dag i månaden numerisk (0-31)
  • %f-mikrosekunder (000000-999999)
  • %H-timme (00-23)
  • %h-timme (01-12)
  • %I-Hour (01-12)
  • %i-minuter numerisk (00-59)
  • %j-dag på året (001-366)
  • %k-timmar (0-23)
  • %l-timme (1-12)
  • %M-månadsnamn (januari-december)
  • %m-månad numerisk (00-12)
  • %p-AM eller PM
  • %r-Tid 12 timmar (tt:mm: ss följt av AM eller PM)
  • %S-sekunder (00-59)
  • %s-sekunder (00-59)
  • %T-tid 24 timmar (hh:mm: ss)
  • %U-vecka (00-53) där söndag är den första dagen i veckan
  • %u-vecka (00-53) där måndag är den första dagen i veckan
  • %V-vecka (01-53) där söndag är den första dagen i veckan som används med %X
  • %v-vecka (01-53) där måndag är den första dagen i veckan som används med %x
  • %W-veckans namn (söndag-lördag)
  • %w-veckodag (0=söndag 6=lördag)
  • %X-år för veckan där söndag är den första dagen i veckan fyra siffror som används med %V
  • %x-år för veckan där måndag är den första dagen i veckan fyra siffror som används med %v
  • %Y-Year numeriska fyra siffror
  • %y-Year numeriska två siffror

Fråga för att formatera ett datum

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

Produktion:

pete davidson nationalitet
Formaterat_datum
Torsdagen den 10 april 2025

Bästa metoder för att arbeta med datum och tid i MySQL

1. Använd alltid rätt datumformat

När du infogar eller uppdaterar datum se till att du följer MySQL:s förväntade format (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Detta säkerställer att dina frågor ger förväntade resultat utan fel.

2. Tidszonsöverväganden med TIMESTAMP

MedanDATETIMElagrar inte tidszonsinformationTIMESTAMPgör. Om din applikation är tidszonskänslig (till exempel i internationella applikationer) överväg att användaTIMESTAMPför datum-tid-fält som måste ta hänsyn till olika tidszoner.

3. Hantera datumintervall i frågor

Se till att du använder korrekta datumjämförelser iWHEREklausul. Exempel:

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

4. Prestandaöverväganden

När du arbetar med datum- och tidsfunktioner, särskilt i stora datamängder, var uppmärksam på effekten på prestandan. Undvik att använda funktioner somNOW()ellerCURDATE()iWHEREklausul eftersom de kan sakta ner frågor när de hanterar stora tabeller.

Slutsats

MySQL:s datum- och tidsfunktioner är viktiga verktyg för hantering och manipulera tidsdata i dina databaser. Genom att bemästra funktioner somNOW() CURDATE() DATE_ADD() DATEDIFF()ochDATE_FORMAT()du lätt kan arbeta med tidsbaserade beräkningar jämförelser och format . Nyckeln till att effektivt använda dessa funktioner är att förstå deras syntax när och hur de ska användas och deras prestandaimplikationer i stora datamängder. Med denna kunskap kommer du att kunna bygga mer effektiva exakta och skalbara frågor för alla dina datum- och tidsrelaterade behov i MySQL.

Skapa frågesport