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.