Al usar TO_CHAR()
para formatear un valor de fecha y hora en Oracle Database, puede agregar el indicador de meridiano (AM/PM) simplemente agregando AM
o PM
a su modelo de formato.
Luego, Oracle muestra el indicador de meridiano apropiado, dependiendo de si el valor de la hora es AM o PM.
Puede proporcionarlo en mayúsculas o minúsculas, y con o sin puntos (por ejemplo, AM
, A.M.
a.m
, a.m
, etc). Oracle luego mostrará el indicador de meridiano como se especifica.
Ejemplo
Aquí hay un ejemplo para demostrarlo:
SELECT TO_CHAR(timestamp '2030-12-30 08:30:45', 'HH:MI:SS AM')
FROM DUAL;
Resultado:
08:30:45 AM
En este caso, el tiempo es ante meridian, por lo que el resultado tiene AM
adjunto.
AM vs PM
Lo bueno de esto es que Oracle determina si es AM o PM y muestra el indicador de meridiano aplicable.
Entonces, esto es lo que sucede cuando cambio la hora a un valor de PM:
SELECT TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM')
FROM DUAL;
Resultado:
06:30:45 PM
El indicador de meridiano ahora es PM, aunque mi cadena de formato es AM
. Oracle fue lo suficientemente inteligente como para saber que el momento es posterior al meridiano.
Mayúsculas vs Minúsculas
Cambiar el caso del elemento de formato cambia el caso del 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
Puntos vs No Puntos
Puedes incluir puntos si lo prefieres:
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.
Aunque, tenga en cuenta que esto afectó el indicador de meridiano de mayúsculas y minúsculas.
Fecha y hora de hoy
Aquí, paso SYSDATE
para obtener la fecha/hora actual:
SELECT
TO_CHAR(SYSDATE, 'HH:MI:SS A.M.')
FROM DUAL;
Resultado:
07:55:57 P.M.