MySQL datuma un laika funkcijas

MySQL datuma un laika funkcijas

Apstrāde datums un laiks dati MySQL ir būtiski daudzām datu bāzes operācijām, jo ​​īpaši, ja runa ir par laika zīmogu apstrādi, plānojot uzdevumus vai ģenerējot uz laiku. MySQL nodrošina dažādas datuma un laika funkcijas, kas palīdz lietotājiem strādāt ar datuma vērtībām, veikt aprēķinus un pēc vajadzības formatēt tos.

Šīs funkcijas ļauj izstrādātājiem veikt aprēķinus, lai iegūtu noteiktas datuma daļas vai pat formatētu izvadi, lai nodrošinātu labāku lasāmību. Šajā rakstā mēs izpētīsim visbiežāk izmantotās MySQL datuma funkcijas, izskaidrosim to sintaksi, sniedzam piemērus un sniegsim norādījumus, kā tās efektīvi izmantot.

Izpratne par MySQL datuma un laika datu tipiem

Strādājot ar datumiem MySQL, tas var būt sarežģīti iesācējiem, jo ​​īpaši tāpēc, ka datuma formātam datu bāzē ir jāatbilst ievades datu formātam ievietošanas laikā. Daudzos gadījumos tā vietā, lai izmantotu vienkāršu datumu, mums var būt nepieciešams saglabāt gan datumu, gan laiku atkarībā no lietošanas gadījuma. Šī ir vieta, kur DATETIME un TIMESTAMP tiek izmantoti datu veidi.

MySQL datuma un laika vērtību glabāšanai nodrošina šādus datu tipus:

1. DATUMS :

  • Formāts : YYYY-MM-DD
  • Izmanto tikai datuma (gads mēnesis un diena) glabāšanai bez laika komponentiem.

2. DATETIME :

  • Formāts : YYYY-MM-DD HH:MM:SS
  • Saglabā gan datumu, gan laiku, padarot to noderīgu, ja nepieciešams tvert noteiktu laiku kopā ar datumu.

3. LAIKZĪMOGS :

  • Formāts : YYYY-MM-DD HH:MM:SS
  • Līdzīgi kā DATETIME bet TIMESTAMP ietver arī laika joslu atbalstu. Tas automātiski tiek atjaunināts uz pašreizējo laikspiedolu, kad ieraksts tiek modificēts, padarot to ideāli piemērotu ierakstu izmaiņu izsekošanai laika gaitā.

4. GADS :

  • Formāts : YYYY vai YY
  • Izmanto tikai gada glabāšanai, kas var būt noderīgs lietojumprogrammām, kurās ir nepieciešams tikai gads, piemēram, dzimšanas gadu vai fiskālo gadu izsekošanai.

MySQL datuma un laika funkcijas

Tagad iedziļināsimies MySQL datuma funkcijās, kuras varat izmantot, lai efektīvi manipulētu un vaicātu datuma un laika datus.

1. TAGAD() — iegūstiet pašreizējo datumu un laiku

The TAGAD () funkcija izgūst pašreizējo datumu un laiku GGGG-MM-DD HH:MI:SS formātā.

Vaicājums:

 SELECT NOW();   

Izvade:

tagad metodes izvades attēls

2. CURDATE() — iegūt tikai pašreizējo datumu

Ja mums ir nepieciešams tikai pašreizējais datums bez laika daļas, ko varam izmantot CURDATE() kas atgriež datumu YYYY-MM-DD formātā.

Vaicājums:

 SELECT CURDATE();   

Izvade: 

IZEJA2

3. CURTIME() — iegūstiet tikai pašreizējo laiku

Funkcija CURTIME() atgriež pašreizējo laiku HH:MI:SS formātā, izņemot datumu.

Vaicājums:

 SELECT CURTIME();   

Izvade: 

IZEJA3

4. DATE() — izņemiet datuma daļu no DATETIME vērtības

The DATE() funkcija no a izvelk tikai datuma daļu DATETIME vai TIMESTAMP vērtību, atmetot laiku.

Piemērs: Par galdu sauc users :

Id Vārds Dzimšanas laiks
4120 Prakse 1996-09-26 16:44:15.581

Vaicājums:

 SELECT Name DATE(BirthTime)    
AS BirthDate FROM Test;

Izvade:

Vārds Dzimšanas datums
Prakse 1996-09-26

5. EXTRACT() — izvilkt noteikta datuma daļas

EXTRACT() tiek izmantots, lai iegūtu noteiktas datuma daļas, piemēram, dienu, mēnesi vai gadu. Šī funkcija var būt īpaši noderīga, analizējot vai salīdzinot dažādas datuma daļas. Var apsvērt vairākas vienības, bet tiek izmantotas tikai dažas, piemēram, MIKROSEKUDES OTRĀ MINŪTE STUNDA DIENA NEDĒĻA MĒNESIS Ceturkšņa GADS utt. Un “datums” ir derīga datuma izteiksme.

Sintakse:

EXTRACT(vienība NO datuma);

Vaicājuma izvilkšanas diena:

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

Izvade: 

Vārds Dzimšanas diena
Prakse 26

Vaicājuma izvilkšanas gads:

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

Izvade: 

Vārds Dzimšanas gads
Prakse 1996. gads

Sekunžu izvilkšanas vaicājums:

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

Izvade:

Vārds DzimšanaOtrā
Prakse 581

6. DATE_ADD() — pievienojiet datumam intervālus

The DATE_ADD() funkcija ļauj datumam vai datumam pievienot laika intervālus (piem., dienas, mēneši, gadi). DATETIME vērtību.

Sintakse:

DATE_ADD(datuma INTERVAL izteiksmes veids);

Piemērs: Zemāk esošajai tabulai ar nosaukumu " Pārbaude '

Id Vārds Dzimšanas laiks
4120 Prakse 1996-09-26 16:44:15.581

Vaicājums uz Pievienojiet 1 gadu datumam

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

Izvade:

Vārds Dzimšanas laiksModificēts
Prakse 1997-09-26 16:44:15.581

Vaicājums, lai datumam pievienotu 30 dienas

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

Izvade:

Vārds BirthDayModified
Prakse 1996-10-26 16:44:15.581

Vaicājums, lai datumam pievienotu 4 stundas

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

Izvade: 

Vārds DzimšanaOtrā
Prakse 1996-10-26 20:44:15.581

7. DATEDIFF() - Atrodiet atšķirību starp diviem datumiem

Šī funkcija atgriež dienu skaitu starp diviem datumiem. 

Sintakse:

DATEDIFF(intervaldate1 date2);

intervāls - minūte/stunda/mēnesis/gads utt

date1 & date2- datuma/laika izteiksme

Vaicājums uz Atrodiet atšķirību starp diviem datumiem

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

Izvade: 

DateDiff

8. DATE_FORMAT() — datuma un laika formāta

DATE_FORMAT() ļauj mums formatēt a DATE DATETIME vai LAIKZĪMOGS vērtību pielāgotā formātā, izmantojot vietturus.

Sintakse:

DATE_FORMAT(datuma formāts);

datums ir derīgs datums, un formāts norāda datuma/laika izvades formātu. Var izmantot šādus formātus:

  • %a — saīsināts nedēļas dienas nosaukums (sv.–sestdien)
  • %b — saīsināts mēneša nosaukums (janvāris–decembris)
  • %c mēnesis (0–12)
  • %D — mēneša diena ar angļu valodas sufiksu (0. 1. 2. 3.)
  • %d — skaitļu mēneša diena (00-31)
  • %e-mēneša diena (0-31)
  • %f-mikrosekundes (000000-999999)
  • % H-stunda (00-23)
  • %h-stunda (01-12)
  • %I stunda (01-12)
  • %i minūtes (00-59)
  • %j — gada diena (001-366)
  • %k stunda (0-23)
  • %l-stunda (1-12)
  • %M Month nosaukums (janvāris–decembris)
  • %m mēnesis (00-12)
  • %p-AM vai PM
  • %r Laiks 12 stundas (hh:mm: ss, kam seko AM vai PM)
  • %S sekundes (00-59)
  • %s sekundes (00-59)
  • % T laiks 24 stundas (hh:mm: ss)
  • %U nedēļa (00-53), kur svētdiena ir nedēļas pirmā diena
  • %u nedēļa (00–53), kur pirmdiena ir nedēļas pirmā diena
  • %V nedēļa (01-53), kur svētdiena ir pirmā nedēļas diena, ko izmanto kopā ar %X
  • %v Nedēļa (01-53), kur pirmdiena ir pirmā nedēļas diena, ko izmanto kopā ar %x
  • %W — nedēļas dienas nosaukums (svētdiena–sestdiena)
  • %w — nedēļas diena (0 = svētdiena, 6 = sestdiena)
  • %X gads nedēļai, kurā svētdiena ir nedēļas pirmā diena, ar %V lietoti četri cipari
  • %x gads nedēļai, kurā pirmdiena ir nedēļas pirmā diena, četri cipari tiek lietoti kopā ar %v
  • %Y gada ciparu četri cipari
  • %y-Year ciparu divi cipari

Vaicājums, lai formatētu datumu

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

Izvade:

Formatted_date
Ceturtdiena, 10.04.2025

Paraugprakse darbam ar datumu un laiku programmā MySQL

1. Vienmēr izmantojiet pareizos datuma formātus

Ievietojot vai atjauninot datumus, pārliecinieties, ka ievērojat MySQL paredzētos formātus ( YYYY-MM-DD YYYY-MM-DD HH:MI:SS ). Tas nodrošina, ka jūsu vaicājumi atgriež gaidītos rezultātus bez kļūdām.

2. Laika joslas apsvērumi, izmantojot TIMESTAMP

Kamēr DATETIME nesaglabā laika joslas informāciju TIMESTAMP dara. Ja jūsu lietojumprogramma ir jutīga pret laika joslu (piemēram, starptautiskās lietojumprogrammās), apsveriet iespēju izmantot TIMESTAMP datuma un laika laukiem, kuros jāņem vērā dažādas laika joslas.

3. Datumu diapazonu apstrāde vaicājumos

Lai filtrētu datus, pamatojoties uz datumu diapazoniem (piemēram, izgūtu visus ierakstus no konkrēta mēneša vai gada), pārliecinieties, ka izmantojat pareizu datumu salīdzinājumu WHERE klauzula. Piemērs:

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

4. Veiktspējas apsvērumi

Strādājot ar datuma un laika funkcijām, īpaši lielās datu kopās, ņemiet vērā ietekmi uz veiktspēju. Izvairieties no tādu funkciju izmantošanas kā NOW() vai CURDATE() sadaļā WHERE klauzulu, jo tie var palēnināt vaicājumus, strādājot ar lielām tabulām.

Secinājums

MySQL datuma un laika funkcijas ir būtiski instrumenti apstrāde un manipulējot laika dati jūsu datu bāzēs. Apgūstot tādas funkcijas kā NOW() CURDATE() DATE_ADD() DATEDIFF() un DATE_FORMAT() jūs varat viegli strādāt ar uz laiku balstīti aprēķini salīdzinājumiem un formātos . Galvenais, lai šīs funkcijas varētu efektīvi izmantot, ir saprast to sintaksi, kad un kā tās izmantot, un to ietekmi uz veiktspēju lielās datu kopās. Izmantojot šīs zināšanas, jūs varēsiet izveidot efektīvākus, precīzus un mērogojamus vaicājumus visām jūsu ar datumu un laiku saistītajām vajadzībām pakalpojumā MySQL.

Izveidojiet viktorīnu