logo

Funzioni di data e ora MySQL

Gestione data e ora i dati in MySQL sono essenziali per molte operazioni di database, soprattutto quando si tratta di gestire attività di pianificazione di timestamp o di generare dati basati sul tempo. MySQL fornisce una varietà di funzioni di data e ora che aiutano gli utenti a lavorare con i valori di data, eseguire calcoli e formattarli secondo necessità.

Queste funzioni consentono agli sviluppatori di eseguire calcoli, estrarre parti specifiche di una data o addirittura formattare l'output per una migliore leggibilità. In questo articolo esploreremo le funzioni di data MySQL più comunemente utilizzate, spiegheremo la loro sintassi, forniremo esempi e ti spiegheremo come utilizzarle in modo efficace

Comprensione dei tipi di dati di data e ora MySQL

Quando si lavora con le date in MySQL può essere complicato per i principianti, soprattutto perché il formato della data nel database deve corrispondere al formato dei dati di input durante l'inserimento. In molti casi, invece di utilizzare solo una semplice data, potrebbe essere necessario memorizzare sia la data che l'ora a seconda del caso d'uso. Questo è dove il DATETIME E TIMESTAMP entrano in gioco i tipi di dati.



MySQL fornisce i seguenti tipi di dati per la memorizzazione di valori di data e ora:

1. DATA :

  • Formato :YYYY-MM-DD
  • Utilizzato per memorizzare solo la data (anno, mese e giorno) senza alcuna componente temporale.

2. DATAORA :

  • Formato :YYYY-MM-DD HH:MM:SS
  • Memorizza sia la data che l'ora rendendolo utile quando è necessario acquisire orari specifici insieme alla data.

3. TIMESTAMP :

  • Formato :YYYY-MM-DD HH:MM:SS
  • Simile aDATETIMEMaTIMESTAMPinclude anche il supporto del fuso orario. Si aggiorna automaticamente al timestamp corrente quando un record viene modificato, rendendolo ideale per tenere traccia delle modifiche ai record nel tempo.

4. ANNO :

  • Formato :YYYYOYY
  • Utilizzato per memorizzare solo l'anno, il che può essere utile per applicazioni in cui è necessario solo l'anno, ad esempio il monitoraggio degli anni di nascita o degli anni fiscali.

Funzioni di data e ora MySQL

Ora approfondiamo le funzioni di data MySQL che puoi utilizzare per manipolare ed eseguire query sui dati di data e ora in modo efficace.

1. ORA(): ottieni la data e l'ora correnti

IL ORA() la funzione recupera la data e l'ora correnti in AAAA-MM-GG HH:MI:SS formato.

Domanda:

SELECT NOW();  

Produzione:

ora metodo immagine di output' title=

2. CURDATE() - Ottieni solo la data corrente

Se abbiamo solo bisogno della data corrente senza la parte temporale che possiamo utilizzare CURDATE() che restituisce la data in YYYY-MM-DD formato.

Domanda:

SELECT CURDATE();  

Produzione: 

USCITA2' loading='lazy' title=

3. CURTIME() - Ottieni solo l'ora corrente

La funzione CURTIME() restituisce l'ora corrente in HH:MI:SS formato esclusa la data.

Domanda:

SELECT CURTIME();  

Produzione: 

USCITA3' loading='lazy' title=

4. DATE(): estrae la parte della data da un valore DATETIME

ILDATE()la funzione estrae solo la parte della data da aDATETIMEOTIMESTAMPvalore scartando il tempo.

Esempio: Per un tavolo chiamato users :

Id Nome Ora di nascita
4120Pratica26-09-1996 16:44:15.581

Domanda:

impostazioni del browser web
SELECT Name DATE(BirthTime)   
AS BirthDate FROM Test;

Produzione:

Nome Data di nascita
Pratica26-09-1996

5. EXTRACT(): estrae parti di date specifiche

EXTRACT()viene utilizzato per estrarre parti specifiche di una data come il giorno, il mese o l'anno. Questa funzione può essere particolarmente utile quando si analizzano o si confrontano diverse parti di una data. Si possono prendere in considerazione diverse unità ma solo alcune vengono utilizzate come ad esempio MICROSECONDI SECONDO MINUTO ORA GIORNO SETTIMANA MESE TRIMESTRE ANNO ecc. E "data" è un'espressione di data valida.

Sintassi:

EXTRACT(unità DA data);

Query per estrarre il giorno:

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

Produzione: 

Nome Compleanno
Pratica26

Query per estrarre l'anno:

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

Produzione: 

Nome Anno di nascita
Pratica1996

Query per estrarre i secondi:

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

Produzione:

Nome NascitaSecondo
Pratica581

6. DATE_ADD(): aggiunge intervalli a una data

IL DATA_ADD() la funzione consente di aggiungere intervalli di tempo (ad esempio giorni mesi anni) a una data oDATETIMEvalore.

Sintassi:

DATE_ADD(tipo espressione data INTERVAL);

Esempio: Per la tabella seguente denominata ' Test '

Id Nome Ora di nascita
4120Pratica26-09-1996 16:44:15.581

Interroga a Aggiungi 1 anno a una data

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

Produzione:

Nome Ora di nascitaModificato
Pratica26-09-1997 16:44:15.581

Query per aggiungere 30 giorni a una data

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

Produzione:

Nome Giorno di nascitaModificato
Pratica1996-10-26 16:44:15.581

Query per aggiungere 4 ore a una data

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

Produzione: 

Nome NascitaSecondo
Pratica26-10-1996 20:44:15.581

7. DATAIFF() – Trova la differenza tra due date

Questa funzione restituisce il numero di giorni tra due date. 

Sintassi:

DATEDIFF(intervallodata1 data2);

intervallo - minuto/ora/mese/anno ecc

data1 e data2: espressione di data/ora

Interroga a Trova la differenza tra due date

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

Produzione: 

DataDiff

8. DATE_FORMAT() - Formato data e ora

DATE_FORMAT() ci permette di formattare a DATA DATAORA O TIMESTAMP valore in un formato personalizzato utilizzando i segnaposto.

Sintassi:

DATE_FORMAT(formatodata);

la data è una data valida e il formato specifica il formato di output per la data/ora. I formati utilizzabili sono:

  • %a-Nome abbreviato del giorno della settimana (domenica-sabato)
  • %b-Nome abbreviato del mese (gennaio-dicembre)
  • %c-Mese numerico (0-12)
  • %D-giorno del mese con suffisso inglese (0° 1° 2° 3°)
  • %d-Giorno del mese numerico (00-31)
  • %e-Giorno del mese numerico (0-31)
  • %f-Microsecondi (000000-999999)
  • %H-Ora (00-23)
  • %h-Ora (01-12)
  • %I-Ora (01-12)
  • %i-Minuti numerici (00-59)
  • %j-Giorno dell'anno (001-366)
  • %k-ora (0-23)
  • %l-Ora (1-12)
  • %M-Nome del mese (gennaio-dicembre)
  • %m-Mese numerico (00-12)
  • %p-AM o PM
  • %r-Time 12 ore (hh:mm: ss seguito da AM o PM)
  • %S-secondi (00-59)
  • %s-secondi (00-59)
  • %T-Time 24 ore (hh:mm:ss)
  • %U-Settimana (00-53) dove Domenica è il primo giorno della settimana
  • %u-Settimana (00-53) dove Lunedì è il primo giorno della settimana
  • %V-Settimana (01-53) dove Domenica è il primo giorno della settimana utilizzato con %X
  • %v-Settimana (01-53) dove Lunedì è il primo giorno della settimana utilizzato con %x
  • %W-Nome del giorno della settimana (domenica-sabato)
  • %w-Giorno della settimana (0=domenica 6=sabato)
  • %X-Anno per la settimana in cui domenica è il primo giorno della settimana, quattro cifre utilizzate con %V
  • %x-Anno per la settimana in cui lunedì è il primo giorno della settimana, quattro cifre utilizzate con %v
  • %Y-Anno numerico a quattro cifre
  • %y-Anno numerico a due cifre

Interrogazione per formattare una data

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

Produzione:

Data_formattata
Giovedì 10 aprile 2025

Best practice per lavorare con data e ora in MySQL

1. Utilizza sempre formati di data corretti

Quando inserisci o aggiorni le date assicurati di seguire i formati previsti da MySQL (YYYY-MM-DD YYYY-MM-DD HH:MI:SS). Ciò garantisce che le query restituiscano i risultati attesi senza errori.

2. Considerazioni sul fuso orario con TIMESTAMP

MentreDATETIMEnon memorizza le informazioni sul fuso orarioTIMESTAMPfa. Se la tua applicazione è sensibile al fuso orario (ad esempio nelle applicazioni internazionali), considera l'utilizzoTIMESTAMPper i campi data-ora che devono tenere conto di fusi orari diversi.

3. Gestione degli intervalli di date nelle query

Per filtrare i dati in base agli intervalli di date (ad esempio recuperando tutti i record da un mese o anno specifico), assicurati di utilizzare confronti di date corretti nelWHEREclausola. Esempio:

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

4. Considerazioni sulle prestazioni

Quando si lavora con le funzioni di data e ora, soprattutto in set di dati di grandi dimensioni, è necessario prestare attenzione all'impatto sulle prestazioni. Evitare di utilizzare funzioni comeNOW()OCURDATE()nelWHEREclausola in quanto possono rallentare le query quando si gestiscono tabelle di grandi dimensioni.

Conclusione

Le funzioni di data e ora di MySQL sono strumenti essenziali per gestione E manipolare dati temporali all'interno dei vostri database. Padroneggiando funzioni comeNOW() CURDATE() DATE_ADD() DATEDIFF()EDATE_FORMAT()con cui puoi lavorare facilmente calcoli basati sul tempo confronti E formati . La chiave per utilizzare efficacemente queste funzioni è comprenderne la sintassi, quando e come utilizzarle e le implicazioni sulle prestazioni in set di dati di grandi dimensioni. Con questa conoscenza sarai in grado di creare query più efficienti, precise e scalabili per tutte le tue esigenze relative a data e ora in MySQL.

Crea quiz