Mysql
 sql >> Database >  >> RDS >> Mysql

Come formattare la data e l'ora in MySQL

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   |
+-------------+----------+----------+----------+----------+