Ao usar o
TO_CHAR()
função para formatar um valor de data e hora no banco de dados Oracle, você pode adicionar o indicador de meridiem (AM/PM) simplesmente adicionando A.M.
ou PM
ao seu modelo de formato. O Oracle então exibe o indicador de meridiano apropriado, dependendo se o valor de tempo é AM ou PM.
Você pode fornecê-lo em qualquer maiúscula ou minúscula e com ou sem pontos (por exemplo,
A.M.
, A.M.
am
, a.m
, etc). O Oracle exibirá o indicador de meridiano conforme especificado. Exemplo
Segue um exemplo para demonstrar:
SELECT TO_CHAR(timestamp '2030-12-30 08:30:45', 'HH:MI:SS AM')
FROM DUAL;
Resultado:
08:30:45 AM
Neste caso, a hora é ante meridiem e, portanto, o resultado tem
A.M.
anexado. AM vs PM
O bom disso é que o Oracle calcula se é AM ou PM e exibe o indicador de meridiano aplicável.
Então aqui está o que acontece quando eu mudo o tempo para um valor PM:
SELECT TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM')
FROM DUAL;
Resultado:
06:30:45 PM
O indicador de meridiem agora é PM, mesmo que minha string de formato seja
A.M.
. A Oracle foi inteligente o suficiente para saber que o tempo é pós-meridiem. Maiúsculas x Minúsculas
Alterar o caso do elemento de formato altera o caso do resultado:
SELECT
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM') AS "Uppercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS am') AS "Lowercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS Am') AS "Mixed"
FROM DUAL;
Resultado:
Uppercase Lowercase Mixed ______________ ______________ ______________ 06:30:45 PM 06:30:45 pm 06:30:45 Pm
Pontos x Sem Pontos
Você pode incluir pontos se preferir:
SELECT
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS A.M.') AS "Uppercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS a.m.') AS "Lowercase",
TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS A.m.') AS "Mixed"
FROM DUAL;
Resultado:
Uppercase Lowercase Mixed ________________ ________________ ________________ 06:30:45 P.M. 06:30:45 p.m. 06:30:45 P.M.
No entanto, observe que isso afetou o indicador de meridiano de maiúsculas e minúsculas.
Data e hora de hoje
Aqui, passo
SYSDATE
para obter a data/hora atual:SELECT
TO_CHAR(SYSDATE, 'HH:MI:SS A.M.')
FROM DUAL;
Resultado:
07:55:57 P.M.