Funcions de data i hora de MySQL

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 a DATETIME però TIMESTAMP també 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 : YYYY o YY
  • 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.

Consulta:

 SELECT NOW();   

Sortida:

ara la imatge de sortida del mètode

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

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

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

El DATE() La funció extreu només la part de la data de a DATETIME o TIMESTAMP valor descartant el temps.

Exemple: Per a una taula trucada users :

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

Consulta:

 SELECT Name DATE(BirthTime)    
AS BirthDate FROM Test;

Sortida:

Nom Data de naixement
Pràctica 26-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);

Consulta per extreure el dia:

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

Sortida: 

Nom Aniversari
Pràctica 26

Consulta per extreure l'any:

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

Sortida: 

Nom Any de naixement
Pràctica 1996

Consulta per extreure segons:

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

Sortida:

Nom NaixementSegon
Pràctica 581

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 o DATETIME valor.

Sintaxi:

DATE_ADD(data INTERVAL tipus d'expr);

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

Id Nom Hora de naixement
4120 Pràctica 26-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àctica 26-09-1997 16:44:15.581

Consulta per afegir 30 dies a una data

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

Sortida:

Nom Naixement modificat
Pràctica 26-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àctica 26-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ó.

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

Mentre DATETIME no emmagatzema informació de la zona horària TIMESTAMP fa. Si la vostra aplicació és sensible a la zona horària (per exemple, en aplicacions internacionals), penseu a utilitzar-la TIMESTAMP per 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 al WHERE clà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 com NOW() o CURDATE() en el WHERE clà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 com NOW() CURDATE() DATE_ADD() DATEDIFF() i DATE_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