Lors de l'utilisation de TO_CHAR()
pour formater une valeur datetime dans Oracle Database, vous pouvez ajouter l'indicateur meridiem (AM/PM) en ajoutant simplement soit AM
ou PM
à votre modèle de format.
Oracle affiche alors l'indicateur de méridien approprié, selon que la valeur horaire est AM ou PM.
Vous pouvez le fournir en majuscules ou en minuscules, avec ou sans points (par exemple, AM
, A.M.
am
, A.M.
, etc). Oracle affichera alors l'indicateur Meridiem comme spécifié.
Exemple
Voici un exemple pour illustrer :
SELECT TO_CHAR(timestamp '2030-12-30 08:30:45', 'HH:MI:SS AM')
FROM DUAL;
Résultat :
08:30:45 AM
Dans ce cas, l'heure est ante meridiem, et donc le résultat a AM
annexé.
AM vs PM
La bonne chose à ce sujet est qu'Oracle détermine s'il s'agit du matin ou de l'après-midi et affiche l'indicateur de méridiem applicable.
Voici donc ce qui se passe lorsque je remplace l'heure par une valeur PM :
SELECT TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM')
FROM DUAL;
Résultat :
06:30:45 PM
L'indicateur meridiem est maintenant PM, même si ma chaîne de format est AM
. Oracle a été assez intelligent pour savoir que l'heure est post-méridiom.
Majuscule vs Minuscule
Changer la casse de l'élément de format change la casse du résultat :
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;
Résultat :
Uppercase Lowercase Mixed ______________ ______________ ______________ 06:30:45 PM 06:30:45 pm 06:30:45 Pm
Points contre aucun point
Vous pouvez inclure des points si vous préférez :
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;
Résultat :
Uppercase Lowercase Mixed ________________ ________________ ________________ 06:30:45 P.M. 06:30:45 p.m. 06:30:45 P.M.
Cependant, notez que cela a affecté l'indicateur de méridiem à casse mixte.
Date et heure du jour
Ici, je passe SYSDATE
pour obtenir la date/heure actuelle :
SELECT
TO_CHAR(SYSDATE, 'HH:MI:SS A.M.')
FROM DUAL;
Résultat :
07:55:57 P.M.