Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment ajouter l'indicateur Meridiem (AM/PM) à une valeur de temps dans Oracle

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.