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.