O MariaDB inclui muitas funções que permitem retornar valores de hora e data e hora em vários formatos.
Duas funções permitem que você formate a parte da hora usando um relógio de 12 horas, com o designador AM/PM são
DATE_FORMAT()
e TIME_FORMAT()
. Existem muitos especificadores de formato que podem ser usados com essas funções, mas apenas alguns que retornam o designador AM/PM.
O %r
Especificador de formato
O
%r
O especificador de formato é usado para formatar a hora no formato de 12 horas, seguido pelo designador AM/PM. Exemplo:
SELECT DATE_FORMAT('2030-03-10 18:10:37', '%r');
Resultado:
+------------------------------------------+| DATE_FORMAT('2030-03-10 18:10:37', '%r') |+---------------------------- --------------+| 18:10:37 |+------------------------------------------ +
A hora resultante é exibida como se tivesse sido formatada usando a seguinte string de formato:
'%I:%i:%S %p'
. Obviamente, se ele retorna
AM
ou PM
depende do tempo real. Horários antes de 12:00:00
retornar AM
e tempos depois disso retornam PM
. Veja o que acontece se alterarmos a hora antes de
12:00:00
:SELECT DATE_FORMAT('2030-03-10 06:10:37', '%r');
Resultado:
+------------------------------------------+| DATE_FORMAT('2030-03-10 06:10:37', '%r') |+---------------------------- --------------+| 06:10:37 |+------------------------------------------ +
Ambos
DATE_FORMAT()
e TIME_FORMAT()
aceite o %r
especificador de formato, para que possamos usar o mesmo especificador de formato com o TIME_FORMAT()
função:SELECT TIME_FORMAT('06:10:37', '%r');
Resultado:
+-------------------------------+| TIME_FORMAT('06:10:37', '%r') |+------------------------------------------+| 06:10:37 |+------------------------------------------+
TIME_FORMAT()
aceita valores de hora, bem como valores de data e hora, enquanto DATE_FORMAT()
aceita apenas valores de data e data e hora. No entanto, TIME_FORMAT()
só aceita especificadores de formato para horas, minutos e segundos. Vendo como %r
retorna horas, minutos e segundos, isso também é aceito. O %p
Especificador de formato
O
%p
especificador de formato é um especificador de formato mais específico que é usado exclusivamente para representar o designador AM/PM. Normalmente é usado em conjunto com outros especificadores de formato para retornar a hora em um formato personalizado. Como mencionado, o
%r
especificador de formato formata a hora como se ela tivesse sido formatada usando a seguinte string de formato:'%I:%i:%S %p'
. Vamos usar essa string explicitamente:
SELECT TIME_FORMAT('18:10:37', '%I:%i:%S %p');
Resultado:
+----------------------------------------+| TIME_FORMAT('18:10:37', '%I:%i:%S %p') |+------------------------- ---------------+| 18:10:37 |+---------------------------------------------------+
Assim, obtemos o mesmo resultado de quando usamos o%r
especificador de formato.
No entanto, um benefício de usar esse método é que podemos construir a saída de nossa própria maneira personalizada.
Por exemplo:
SELECT TIME_FORMAT('18:10:37', '%l:%i %p');
Resultado:
+-------------------------------------+| TIME_FORMAT('18:10:37', '%l:%i %p') |+---------------------------- ---------+| 18h10 |+------------------------------------------------+
Aqui, usamos%l
para retornar a parte da hora sem o zero à esquerda. Também omitimos a parte dos segundos do tempo.
Consulte Strings de formato MariaDB para obter uma lista completa de especificadores de formato que podem ser usados com essas funções.