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
DATETIMEperò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:

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:

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:

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 |
|---|---|---|
| 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);
unitat aritmètica lògica
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 oDATETIMEvalor.
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
subratlla a la reducció
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ó.
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.