sql >> Base de Datos >  >> RDS >> Oracle

Cómo agregar el indicador Meridiem (AM/PM) a un valor de tiempo en Oracle

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.