Le date e gli orari sono importanti, aiutano a mantenere le cose organizzate e sono un aspetto integrante di qualsiasi operazione software.

Lavorare in modo efficiente con loro all'interno del database a volte può sembrare confuso, sia che si tratti di lavorare su vari fusi orari, aggiungere / sottrarre date e altre operazioni.

Impara le varie funzioni MySQL disponibili per gestire e gestire facilmente date / orari all'interno del tuo database.

Lavorare con i fusi orari

Per mantenere le cose standardizzate, dovresti lavorare solo con date / ore nel fuso orario UTC. Ogni volta che stabilisci una connessione al database MySQL, dovresti cambiare il fuso orario su UTC, cosa che può essere eseguita con la seguente istruzione SQL:

SET TIME_ZONE = '+0: 00'

Poiché tutte le date verranno ora salvate in UTC, sai sempre con cosa stai lavorando, rendendo le cose più semplici e dirette.

Quando necessario puoi facilmente convertire il fuso orario di qualsiasi valore datetime / timestamp con il pratico

instagram viewer
CONVERT_TZ () Funzione MySQL. Devi prima conoscere l'offset, ad esempio, PST sulla costa occidentale del Nord America è UTC -08: 00, quindi puoi usare:

PolyTime è la migliore app di conversione del fuso orario per più città contemporaneamente

PolyTime, una nuova app di MakeUseOf, semplifica il confronto dei fusi orari in tutto il mondo. Ecco cosa puoi fare con esso e come funziona.

SELEZIONA CONVERT_TZ ('2021-02-04 21:47:23', '+0: 00', '-8: 00');

Questo risulta in 2021-02-04 13:47:23 che è esattamente corretto. I tre argomenti sono passati a CONVERT_TZ () sono prima il datetime / timestamp con cui inizi (usa now () per l'ora corrente), il secondo sarà sempre '+0:00' poiché tutte le date sono forzate a UTC nel database e l'ultima è l'offset in cui desideriamo convertire la data.

Aggiungi / Sottrai date

Molte volte è necessario aggiungere o sottrarre dalle date, ad esempio se è necessario recuperare i record di una settimana fa o programmare qualcosa tra un mese.

Per fortuna MySQL ha l'eccellente DATE_ADD () e DATE_SUB () funzioni che rendono questo compito estremamente facile. Ad esempio, puoi sottrarre due settimane dalla data corrente con l'istruzione SQL:

SELEZIONA DATE_SUB (now (), intervallo 2 settimane);

Se invece volessi aggiungere tre giorni a un timestamp esistente, dovresti utilizzare:

SELEZIONA DATE_ADD ('2021-02-07 11:52:06', intervallo di 3 giorni);

Entrambe le funzioni funzionano allo stesso modo, il primo argomento è il timestamp con cui stai iniziando e il secondo argomento è l'intervallo da aggiungere o sottrarre. Il secondo argomento ha sempre lo stesso formato a partire dalla parola intervallo seguito da un valore numerico e dall'intervallo stesso, che può essere uno dei seguenti: secondo, minuto, ora, giorno, settimana, mese, trimestre, anno.

Per un altro esempio, se si desidera recuperare tutti gli accessi avvenuti negli ultimi 34 minuti, è possibile utilizzare un'istruzione SQL come:

SELEZIONA * DA login WHERE login_date> = DATE_SUB (now (), intervallo 45 minuti);

Come puoi vedere, questo recupererebbe tutti i record dal file accessi tabella con una data di accesso maggiore dell'ora corrente meno 45 minuti o, in altre parole, degli ultimi 45 minuti.

Ottieni la differenza tra le date

A volte è necessario capire quanto tempo è trascorso tra due date. Puoi facilmente ottenere il numero di giorni tra due date diverse con DATEDIFF funzione, come la seguente istruzione SQL:

SELEZIONA DATEDIFF (now (), '2020-12-15');

Il DATEDIFF funzione accetta due argomenti, entrambi sono timbri di data / ora e fornisce il numero di giorni tra di loro. L'esempio sopra mostrerà il numero di giorni trascorsi dal 15 dicembre 2020 fino ad oggi.

Per ottenere il numero di secondi tra due date, il file TO_SECONDS () può tornare utile, ad esempio:

SELEZIONA TO_SECONDS (now ()) - TO_SECONDS ('2021-02-05 11:56:41');

Ciò comporterà il numero di secondi tra le due date fornite.

Estrai segmenti dalle date

Esistono varie funzioni MySQL che consentono di estrarre facilmente segmenti specifici dalle date, ad esempio se si desidera solo il mese, il giorno dell'anno o l'ora. Ecco alcuni esempi di tali funzioni:

SELEZIONA MESE ('2021-02-11 15:27:52');
SELEZIONA ORA (now ());
SELEZIONA DAYOFYEAR ('2021-07-15 12:00:00');

Le istruzioni SQL precedenti risulterebbero in 02, l'ora corrente e 196 poiché il 15 settembre è il 196 ° giorno dell'anno. Ecco un elenco di tutte le funzioni di estrazione della data disponibili, ciascuna che prende un solo argomento, la data da cui viene estratta:

- SECONDO ()
- MINUTE ()
- HOUR ()
- GIORNO ()
- SETTIMANA () - Numero da 0 a 52 che definisce la settimana nell'anno.
- MESE()
- TRIMESTRE () - Numero 1 - 4 che definisce il trimestre dell'anno.
- ANNO()
- DAYOFYEAR () - Il giorno dell'anno (es. 15 settembre = 196).
- LAST_DAY () - L'ultimo giorno del mese specificato.
- DATA () - La data nel formato AAAA-MM-GG senza l'ora.
- TIME () L'ora nel formato HH: II: SS senza la data.
- TO_DAYS () - Il numero di giorni trascorsi dallo 0 d.C.
- TO_SECONDS () - Il numero di secondi trascorsi da A.D. 0.
- UNIX_TIMESTAMP () - Il numero di secondi trascorsi dall'epoca (1 gennaio 1970)

Ad esempio, se si desidera recuperare solo il mese e l'anno in cui sono stati creati tutti gli utenti, è possibile utilizzare un'istruzione SQL come:

SELEZIONA id, MONTH (created_at), YEAR (created_at) FROM utenti;

Ciò recupererebbe tutti i record all'interno del file utenti tabella e mostra l'id #, il mese e l'anno in cui è stato creato ciascun utente.

Raggruppamento dei record per periodo di data

Un eccellente utilizzo delle funzioni di data è la capacità di raggruppare i record per periodo di data utilizzando RAGGRUPPARE PER all'interno delle tue istruzioni SQL. Ad esempio, potresti voler estrarre l'importo totale di tutti gli ordini nel 2020 raggruppati per mese. È possibile utilizzare un'istruzione SQL come:

SELEZIONA MESE (created_at), SUM (amount) FROM orders WHERE created_at TRA '2020-01-01 00:00:00' E '2020-12-31 23:59:59' GROUP BY MONTH (created_at);

Ciò recupererebbe tutti gli ordini effettuati nell'anno 2020, li raggrupperebbe in base al mese in cui sono stati creati e restituirebbe 12 record che mostrano l'importo totale ordinato ogni mese dell'anno.

Tieni presente che, per una migliore performance dell'indice, è sempre meglio evitare di utilizzare funzioni di data come ANNO() all'interno della clausola WHERE delle istruzioni SQL e utilizzare invece il FRA operatore come mostrato nell'esempio precedente.

Non essere mai più confuso con le date

Utilizzando le conoscenze di cui sopra è ora possibile lavorare, tradurre ed eseguire in modo efficiente operazioni in date e orari in un'ampia gamma di casi d'uso.

Ricorda di usare sempre UTC quando lavori con le date per semplicità e utilizza i suggerimenti sopra per gestirli in modo efficiente date all'interno del software, sia che si tratti di completare semplici calcoli o di estrarre facilmente report raggruppati per data periodi.

Se sei un po 'nuovo in SQL, assicurati di dare un'occhiata a questi comandi SQL essenziali per aiutarti a migliorare il tuo utilizzo di SQL.

E-mail
Come creare report e documenti professionali in Microsoft Word

Questa guida esamina gli elementi di un report professionale e esamina la struttura, lo stile e la finalizzazione del documento in Microsoft Word.

Argomenti correlati
  • Non specificato
Circa l'autore
Matt Dizak (16 articoli pubblicati)Altro da Matt Dizak

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Ancora un passo…!

Conferma il tuo indirizzo e-mail nell'e-mail che ti abbiamo appena inviato.

.