MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come aggiungere AM/PM a un valore di ora o data e ora in MariaDB

MariaDB include molte funzioni che consentono di restituire i valori di ora e data e ora in una varietà di formati.

Due funzioni consentono di formattare la parte dell'ora utilizzando un orologio a 12 ore, con l'indicatore AM/PM DATE_FORMAT() e TIME_FORMAT() .

Esistono molti identificatori di formato che possono essere utilizzati con queste funzioni, ma solo un paio che restituiscono il designatore AM/PM.

Il %r Identificatore di formato

Il %r l'identificatore di formato viene utilizzato per formattare l'ora nel formato 12 ore, seguito dall'indicatore AM/PM.

Esempio:

SELECT DATE_FORMAT('2030-03-10 18:10:37', '%r');

Risultato:

+------------------------------------------+
| DATE_FORMAT('2030-03-10 18:10:37', '%r') |
+------------------------------------------+
| 06:10:37 PM                              |
+------------------------------------------+

L'ora risultante viene visualizzata come se fosse stata formattata utilizzando la seguente stringa di formato:'%I:%i:%S %p' .

Ovviamente, se restituisce AM o PM dipende dal tempo effettivo. Orari prima delle 12:00:00 restituisci AM e le volte successive restituiscono PM .

Ecco cosa succede se cambiamo l'ora prima delle 12:00:00 :

SELECT DATE_FORMAT('2030-03-10 06:10:37', '%r');

Risultato:

+------------------------------------------+
| DATE_FORMAT('2030-03-10 06:10:37', '%r') |
+------------------------------------------+
| 06:10:37 AM                              |
+------------------------------------------+

Entrambi DATE_FORMAT() e TIME_FORMAT() accetta il %r identificatore di formato, quindi possiamo usare lo stesso identificatore di formato con TIME_FORMAT() funzione:

SELECT TIME_FORMAT('06:10:37', '%r');

Risultato:

+-------------------------------+
| TIME_FORMAT('06:10:37', '%r') |
+-------------------------------+
| 06:10:37 AM                   |
+-------------------------------+

TIME_FORMAT() accetta valori di tempo così come valori di data e ora, mentre DATE_FORMAT() accetta solo valori di data e data e ora. Tuttavia, TIME_FORMAT() accetta solo identificatori di formato per ore minuti e secondi. Visto come %r restituisce ore, minuti e secondi, anche questo è accettato.

Il %p Identificatore di formato

Il %p identificatore di formato è un identificatore di formato più specifico che viene utilizzato esclusivamente per rappresentare l'indicatore AM/PM. Viene normalmente utilizzato insieme ad altri identificatori di formato per restituire l'ora in un formato personalizzato.

Come accennato, il %r identificatore di formato formatta l'ora come se fosse stata formattata utilizzando la seguente stringa di formato:'%I:%i:%S %p' .

Usiamo quella stringa in modo esplicito:

SELECT TIME_FORMAT('18:10:37', '%I:%i:%S %p');

Risultato:

+----------------------------------------+
| TIME_FORMAT('18:10:37', '%I:%i:%S %p') |
+----------------------------------------+
| 06:10:37 PM                            |
+----------------------------------------+

Quindi otteniamo lo stesso risultato di quando usiamo il %r identificatore di formato.

Tuttavia, uno dei vantaggi dell'utilizzo di questo metodo è che possiamo costruire l'output nel nostro modo personalizzato.

Ad esempio:

SELECT TIME_FORMAT('18:10:37', '%l:%i %p');

Risultato:

+-------------------------------------+
| TIME_FORMAT('18:10:37', '%l:%i %p') |
+-------------------------------------+
| 6:10 PM                             |
+-------------------------------------+

Qui abbiamo usato %l per restituire la parte dell'ora senza lo zero iniziale. Abbiamo anche omesso la parte dei secondi del tempo.

Vedi Stringhe di formato MariaDB per un elenco completo degli identificatori di formato che possono essere utilizzati con queste funzioni.