Při použití TO_CHAR()
funkce pro formátování hodnoty data a času v databázi Oracle, můžete přidat indikátor meridiem (AM/PM) jednoduchým přidáním buď AM
nebo PM
na váš model formátu.
Oracle poté zobrazí příslušný indikátor meridiem v závislosti na tom, zda je hodnota času AM nebo PM.
Můžete jej zadat jakýmikoli velkými nebo malými písmeny, s tečkami nebo bez nich (např. AM
, A.M.
am
, a.m
, atd). Oracle poté zobrazí indikátor meridiem, jak je specifikováno.
Příklad
Zde je příklad k demonstraci:
SELECT TO_CHAR(timestamp '2030-12-30 08:30:45', 'HH:MI:SS AM')
FROM DUAL;
Výsledek:
08:30:45 AM
V tomto případě je čas ante meridiem, takže výsledek má AM
připojeno.
AM vs PM
Dobré na tom je, že Oracle zjistí, zda je dopoledne nebo odpoledne, a zobrazí příslušný indikátor poledníku.
Takže když změním čas na hodnotu PM, stane se toto:
SELECT TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM')
FROM DUAL;
Výsledek:
06:30:45 PM
Indikátor meridiem je nyní PM, i když můj formátovací řetězec je AM
. Oracle byl dost chytrý, aby věděl, že čas je po meridiem.
Velká a malá písmena
Změnou velikosti písmen prvku format se změní velikost písmen ve výsledku:
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;
Výsledek:
Uppercase Lowercase Mixed ______________ ______________ ______________ 06:30:45 PM 06:30:45 pm 06:30:45 Pm
Tečky vs žádné tečky
Pokud chcete, můžete vložit tečky:
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;
Výsledek:
Uppercase Lowercase Mixed ________________ ________________ ________________ 06:30:45 P.M. 06:30:45 p.m. 06:30:45 P.M.
Všimněte si však, že to ovlivnilo smíšený ukazatel meridiem velkých a malých písmen.
Dnešní datum a čas
Zde předávám SYSDATE
pro získání aktuálního data/času:
SELECT
TO_CHAR(SYSDATE, 'HH:MI:SS A.M.')
FROM DUAL;
Výsledek:
07:55:57 P.M.