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.