Oracle
 sql >> Database >  >> RDS >> Oracle

Come aggiungere l'indicatore Meridiem (AM/PM) a un valore temporale in Oracle

Quando si utilizza TO_CHAR() funzione per formattare un valore datetime in Oracle Database, puoi aggiungere l'indicatore meridiem (AM/PM) semplicemente aggiungendo A.M. o PM al tuo modello di formato.

Oracle visualizza quindi l'indicatore del meridiem appropriato, a seconda che il valore dell'ora sia AM o PM.

Puoi fornirlo in qualsiasi maiuscolo o minuscolo e con o senza punti (ad es. A.M. , A.M. a.m , a.m , eccetera). Oracle visualizzerà quindi l'indicatore del meridiem come specificato.

Esempio

Ecco un esempio da dimostrare:

SELECT TO_CHAR(timestamp '2030-12-30 08:30:45', 'HH:MI:SS AM') 
FROM DUAL;

Risultato:

08:30:45 AM

In questo caso, il tempo è ante meridiem, quindi il risultato ha A.M. aggiunto.

AM vs PM

La cosa buona è che Oracle capisce se è AM o PM e mostra l'indicatore del meridiem applicabile.

Quindi, ecco cosa succede quando cambio l'ora in un valore PM:

SELECT TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM') 
FROM DUAL;

Risultato:

06:30:45 PM

L'indicatore meridiem ora è PM, anche se la mia stringa di formato è A.M. . Oracle è stato abbastanza intelligente da sapere che l'ora è post meridiem.

Maiuscole vs Minuscole

La modifica del caso dell'elemento del formato cambia il caso del risultato:

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;

Risultato:

     Uppercase      Lowercase          Mixed 
______________ ______________ ______________ 
06:30:45 PM    06:30:45 pm    06:30:45 Pm    

Punti contro nessun punto

Puoi includere dei punti se preferisci:

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;

Risultato:

       Uppercase        Lowercase            Mixed 
________________ ________________ ________________ 
06:30:45 P.M.    06:30:45 p.m.    06:30:45 P.M.   

Tuttavia, si noti che ciò ha influito sull'indicatore del meridiem dei casi misti.

Data e ora di oggi

Qui passo SYSDATE per ottenere la data/ora corrente:

SELECT 
    TO_CHAR(SYSDATE, 'HH:MI:SS A.M.')
FROM DUAL;

Risultato:

07:55:57 P.M.