In MySQL, il DATE_FORMAT()
la funzione consente di formattare la data e l'ora.
Ecco un esempio:
SELECT DATE_FORMAT('2018-12-01', '%W, %d %M %Y');
Risultato:
Saturday, 01 December 2018
In questo esempio, %W
è per il nome del giorno della settimana, %d
è per il giorno del mese, %M
è per il mese e %Y
è per l'anno. Sono disponibili molti altri identificatori di formato che ti consentono di specificare un formato preciso per le date, nonché il componente dell'ora.
Formattazione della componente ora
Ecco un esempio di formattazione del componente ora:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p');
Risultato:
11:03:15 AM
In questo esempio, %p
viene utilizzato per visualizzare AM o PM, a seconda dei casi.
Ovviamente puoi combinarli insieme per formattare sia la data che l'ora in una volta sola:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p, %W, %d %M %Y');
Risultato:
11:03:15 AM, Saturday, 01 December 2018
Formattazione con una funzione data/ora
Spesso vorrai usare DATE_FORMAT()
insieme a un'altra funzione data/ora. Ad esempio, potresti usarlo insieme a CURDATE()
per restituire la data corrente, ben formattata:
SELECT CURDATE() AS Unformatted, DATE_FORMAT(CURDATE(), '%W, %M %d, %Y') AS Formatted;
Risultato:
+-------------+----------------------+ | Unformatted | Formatted | +-------------+----------------------+ | 2018-05-04 | Friday, May 04, 2018 | +-------------+----------------------+
Puoi farlo anche con NOW()
funzione se hai bisogno di tempo:
SELECT NOW() AS Unformatted, DATE_FORMAT(NOW(), '%r') AS Formatted;
Risultati:
+---------------------+-------------+ | Unformatted | Formatted | +---------------------+-------------+ | 2018-05-04 14:33:52 | 02:33:52 PM | +---------------------+-------------+
La funzione TIME_FORMAT()
MySQL ha anche un TIME_FORMAT()
funzione che può essere utilizzata per formattare l'ora. Questa funzione funziona in modo simile a DATE_FORMAT()
tranne che TIME_FORMAT()
accetta solo identificatori di formato solo per ore, minuti, secondi e microsecondi.
Esempio:
SET @time = '07:35:10'; SELECT TIME_FORMAT(@time, '%H') AS Hour, TIME_FORMAT(@time, '%i') AS Minute, TIME_FORMAT(@time, '%s') As Seconds, TIME_FORMAT(@time, '%p') AS 'AM or PM';
Risultati:
+------+--------+---------+----------+ | Hour | Minute | Seconds | AM or PM | +------+--------+---------+----------+ | 07 | 35 | 10 | AM | +------+--------+---------+----------+
La funzione STR_TO_DATE()
Il STR_TO_DATE()
la funzione è l'inverso di DATE_FORMAT()
funzione. Consente di fornire una stringa da formattare come data. Accetta due parametri; la stringa e il formato.
Ecco un esempio:
SELECT STR_TO_DATE('Saturday, 6 December 2018', '%W, %d %M %Y') AS Date;
Risultato:
+------------+ | Date | +------------+ | 2018-12-06 | +------------+
Come trovare il formato della data corretto
MySQL ha una piccola funzione a portata di mano chiamata GET_FORMAT()
. Questa funzione ti aiuta a trovare il formato corretto da usare quando usi DATE_FORMAT()
funzione e/o il STR_TO_DATE()
funzione.
Ecco come funziona:
SELECT GET_FORMAT(DATE, 'USA');
Ciò si traduce in quanto segue:
%m.%d.%Y
Il che ci dice la stringa di formato che dovremmo usare durante la formattazione di una data con DATE_FORMAT()
funzione. Ad esempio, potremmo prendere i risultati da quell'esempio e applicarli a DATE_FORMAT()
funzione:
SELECT DATE_FORMAT(NOW(), '%m.%d.%Y');
E finiremmo con il risultato desiderato:
05.04.2018
Puoi anche passare GET_FORMAT()
direttamente a DATE_FORMAT()
se preferisci.
SELECT DATE_FORMAT(NOW(), GET_FORMAT(DATE, 'USA'));
Risultato:
05.04.2018
In ogni caso, di seguito sono riportati esempi con varie opzioni.
Data
SELECT GET_FORMAT(DATE, 'USA') AS USA, GET_FORMAT(DATE, 'JIS') AS JIS, GET_FORMAT(DATE, 'ISO') AS ISO, GET_FORMAT(DATE, 'EUR') AS EUR, GET_FORMAT(DATE, 'INTERNAL') AS INTERNAL;
Risultato:
+----------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +----------+----------+----------+----------+----------+ | %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d | +----------+----------+----------+----------+----------+
Data e ora
SELECT GET_FORMAT(DATETIME, 'USA') AS USA, GET_FORMAT(DATETIME, 'JIS') AS JIS, GET_FORMAT(DATETIME, 'ISO') AS ISO, GET_FORMAT(DATETIME, 'EUR') AS EUR, GET_FORMAT(DATETIME, 'INTERNAL') AS INTERNAL;
Risultato:
+-------------------+-------------------+-------------------+-------------------+--------------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------------+-------------------+-------------------+-------------------+--------------+ | %Y-%m-%d %H.%i.%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H.%i.%s | %Y%m%d%H%i%s | +-------------------+-------------------+-------------------+-------------------+--------------+
Tempo
SELECT GET_FORMAT(TIME, 'USA') AS USA, GET_FORMAT(TIME, 'JIS') AS JIS, GET_FORMAT(TIME, 'ISO') AS ISO, GET_FORMAT(TIME, 'EUR') AS EUR, GET_FORMAT(TIME, 'INTERNAL') AS INTERNAL;
Risultato:
+-------------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------+----------+----------+----------+----------+ | %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s | +-------------+----------+----------+----------+----------+