MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como adicionar AM/PM a um valor de hora ou data e hora no MariaDB


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.