logo

Funcions de data i hora de MySQL

Manipulació data i hora Les dades a MySQL són essencials per a moltes operacions de bases de dades, especialment quan es tracta de gestionar tasques de programació de segells de temps o de generació basada en el temps. MySQL ofereix una varietat de funcions de data i hora que ajuden els usuaris a treballar amb valors de data a realitzar càlculs i formatar-los segons sigui necessari.

Aquestes funcions permeten als desenvolupadors realitzar càlculs extreure parts específiques d'una data o fins i tot formatar la sortida per a una millor llegibilitat. En aquest article explorarem les funcions de data de MySQL més utilitzades, expliquem la seva sintaxi, proporcionem exemples i us explicarem com utilitzar-les de manera eficaç.

Entendre els tipus de dades de data i hora de MySQL

Quan es treballa amb dates a MySQL, pot ser complicat per als principiants, sobretot perquè el format de la data a la base de dades ha de coincidir amb el format de les dades d'entrada durant la inserció. En molts casos, en comptes d'utilitzar només una data simple, és possible que hàgim d'emmagatzemar una data i una hora en funció del cas d'ús. Aquí és on el DATETIME i TIMESTAMP entren en joc els tipus de dades.



MySQL proporciona els següents tipus de dades per emmagatzemar els valors de data i hora:

1. DATA :

  • Format :YYYY-MM-DD
  • S'utilitza per emmagatzemar només la data (any, mes i dia) sense cap component horari.

2. DATA HORA :

  • Format :YYYY-MM-DD HH:MM:SS
  • Emmagatzema tant la data com l'hora, per la qual cosa és útil quan necessiteu capturar hores específiques juntament amb la data.

3. MARCA DE TEMPS :

  • Format :YYYY-MM-DD HH:MM:SS
  • Similar aDATETIMEperòTIMESTAMPtambé inclou suport de zona horària. S'actualitza automàticament a la marca de temps actual quan es modifica un registre, per la qual cosa és ideal per fer un seguiment dels canvis dels registres al llarg del temps.

4. ANY :

  • Format :YYYYoYY
  • S'utilitza per emmagatzemar només l'any, cosa que pot ser útil per a aplicacions on només es necessita l'any, com ara el seguiment dels anys de naixement o els anys fiscals.

Funcions de data i hora de MySQL

Ara endinsem-nos en les funcions de data de MySQL que podeu utilitzar per manipular i consultar dades de data i hora de manera eficaç.

1. ARA () - Obteniu la data i l'hora actuals

El ARA () La funció recupera la data i l'hora actuals AAAA-MM-DD HH:MI:SS format.

patrons de disseny java

Consulta:

SELECT NOW();  

Sortida:

ara la imatge de sortida del mètode' title=

2. CURDATE() - Obteniu només la data actual

Si només necessitem la data actual sense la part de l'hora que podem utilitzar CURDATE() que retorna la data en YYYY-MM-DD format.

Consulta:

SELECT CURDATE();  

Sortida: 

SORTIDA 2' loading='lazy' title=

3. CURTIME() - Obteniu només l'hora actual

La funció CURTIME() retorna l'hora actual a HH:MI:SS format excloent la data.

Consulta:

SELECT CURTIME();  

Sortida: 

SORTIDA 3' loading='lazy' title=

4. DATE() - Extreu la part de la data d'un valor DATETIME

ElDATE()La funció extreu només la part de la data de aDATETIMEoTIMESTAMPvalor descartant el temps.

Exemple: Per a una taula trucada users :

Id Nom Hora de naixement
4120Pràctica26-09-1996 16:44:15.581

Consulta:

SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Sortida:

Nom Data de naixement
Pràctica26-09-1996

5. EXTRACT() - Extreu parts de data específiques

EXTRACT()s'utilitza per extreure parts específiques d'una data, com ara el dia, el mes o l'any. Aquesta funció pot ser especialment útil a l'hora d'analitzar o comparar diferents parts d'una data. Es poden considerar diverses unitats però només s'utilitzen algunes com ara MICROSSECON SEGON MIUT HORA DIA SETMANA MES TRIMESTRE ANY etc. I "data" és una expressió de data vàlida.

Sintaxi:

EXTRACT (unitat FROM data);

unitat aritmètica lògica

Consulta per extreure el dia:

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

Sortida: 

Nom Aniversari
Pràctica26

Consulta per extreure l'any:

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

Sortida: 

Nom Any de naixement
Pràctica1996

Consulta per extreure segons:

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

Sortida:

Nom NaixementSegon
Pràctica581

6. DATE_ADD() - Afegeix intervals a una data

El DATE_ADD() La funció us permet afegir intervals de temps (per exemple, dies mesos anys) a una data oDATETIMEvalor.

Sintaxi:

DATE_ADD(data INTERVAL tipus d'expr);

Exemple: Per a la taula següent anomenada ' Prova '

Id Nom Hora de naixement
4120Pràctica26-09-1996 16:44:15.581

Consulta a Afegeix 1 any a una data

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

Sortida:

Nom Hora de naixement modificada
Pràctica26-09-1997 16:44:15.581

Consulta per afegir 30 dies a una data

subratlla a la reducció
SELECT Name DATE_ADD(BirthTime   
INTERVAL 30 DAY) AS BirthDayModified FROM Test;

Sortida:

Nom Naixement modificat
Pràctica26-10-1996 16:44:15.581

Consulta per afegir 4 hores a una data

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

Sortida: 

Nom NaixementSegon
Pràctica26-10-1996 20:44:15.581

7. DATEDIFF() - Trobeu la diferència entre dues dates

Aquesta funció retorna el nombre de dies entre dues dates. 

Sintaxi:

DATEDIFF(intervaldata1 data2);

interval - minut/hora/mes/any etc

data1 i data2- expressió de data/hora

Consulta a Trobeu la diferència entre dues dates

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

Sortida: 

DataDiff

8. DATE_FORMAT() - Format Data i Hora

DATE_FORMAT() ens permet formatar a DATA DATA HORA o MARCA DE TEMPS valor en un format personalitzat mitjançant marcadors de posició.

cadena de substitució de java

Sintaxi:

DATE_FORMAT(format de data);

la data és una data vàlida i el format especifica el format de sortida de la data/hora. Els formats que es poden utilitzar són:

  • %a-Nom abreujat del dia feiner (Dg-Ds)
  • %b-Nom del mes abreujat (gen-desembre)
  • %c-mes numèric (0-12)
  • %D-dia del mes amb sufix anglès (0, 1, 2, 3)
  • %d-dia del mes numèric (00-31)
  • %e-Dia del mes numèric (0-31)
  • %f-Microsegons (000000-999999)
  • % h-hora (00-23)
  • %h-hora (01-12)
  • % I-Hour (01-12)
  • %i-minuts numèrics (00-59)
  • %j-dia de l'any (001-366)
  • %k hores (0-23)
  • %l-hora (1-12)
  • Nom %M-mes (gener-desembre)
  • %m-mes numèric (00-12)
  • %p-AM o PM
  • %r-Time 12 hores (hh:mm: ss seguit de AM o PM)
  • %S-segons (00-59)
  • %s-segons (00-59)
  • %T-Time 24 hores (hh:mm: ss)
  • %U-Week (00-53) on diumenge és el primer dia de la setmana
  • %u-Week (00-53) on dilluns és el primer dia de la setmana
  • %V-Week (01-53) on diumenge és el primer dia de la setmana utilitzat amb %X
  • %v-Week (01-53) on dilluns és el primer dia de la setmana utilitzat amb %x
  • %W-Nom del dia feiner (diumenge-dissabte)
  • %w-dia de la setmana (0=diumenge 6=dissabte)
  • %X-Year per a la setmana on diumenge és el primer dia de la setmana, quatre dígits utilitzats amb %V
  • %x-Any per a la setmana on dilluns és el primer dia de la setmana, quatre dígits utilitzats amb %v
  • %Y-Year numèrics de quatre dígits
  • Dos dígits numèrics de %y-Year

Consulta per donar format a una data

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

Sortida:

Data_formatat
Dijous 10 d'abril de 2025

Bones pràctiques per treballar amb data i hora a MySQL

1. Utilitzeu sempre els formats de data adequats

Quan inseriu o actualitzeu dates, assegureu-vos de seguir els formats esperats de MySQL (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Això garanteix que les vostres consultes retornin els resultats esperats sense errors.

2. Consideracions de la zona horària amb TIMESTAMP

MentreDATETIMEno emmagatzema informació de la zona horàriaTIMESTAMPfa. Si la vostra aplicació és sensible a la zona horària (per exemple, en aplicacions internacionals), penseu a utilitzar-laTIMESTAMPper als camps de data i hora que necessiten tenir en compte diferents zones horàries.

3. Gestió d'intervals de dates a les consultes

Per filtrar les dades basades en intervals de dates (p. ex., recuperar tots els registres d'un mes o any concrets), assegureu-vos d'utilitzar les comparacions de dates adequades alWHEREclàusula. Exemple:

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

4. Consideracions de rendiment

Quan treballeu amb funcions de data i hora, especialment en grans conjunts de dades, tingueu en compte l'impacte en el rendiment. Eviteu utilitzar funcions comNOW()oCURDATE()en elWHEREclàusula ja que poden alentir les consultes quan es tracten taules grans.

Conclusió

Funcions de data i hora de MySQL són eines essencials per maneig i manipulant dades temporals dins de les vostres bases de dades. Dominant funcions comNOW() CURDATE() DATE_ADD() DATEDIFF()iDATE_FORMAT()podeu treballar fàcilment càlculs basats en el temps comparacions i formats . La clau per utilitzar eficaçment aquestes funcions és entendre la seva sintaxi quan i com utilitzar-les i les seves implicacions de rendiment en grans conjunts de dades. Amb aquest coneixement, podreu crear consultes més eficients, precises i escalables per a totes les vostres necessitats relacionades amb la data i l'hora a MySQL.

Crea un qüestionari