Når du bruger TO_CHAR()
funktion til at formatere en datetime-værdi i Oracle Database, kan du tilføje meridiem-indikatoren (AM/PM) ved blot at tilføje enten AM
eller PM
til din formatmodel.
Oracle viser derefter den relevante meridiem-indikator, afhængigt af om tidsværdien er AM eller PM.
Du kan angive det med store eller små bogstaver og med eller uden prikker (f.eks. AM
, A.M.
am
, a.m
, etc). Oracle vil derefter vise meridiem-indikatoren som angivet.
Eksempel
Her er et eksempel til demonstration:
SELECT TO_CHAR(timestamp '2030-12-30 08:30:45', 'HH:MI:SS AM')
FROM DUAL;
Resultat:
08:30:45 AM
I dette tilfælde er tiden ante meridiem, og resultatet har derfor AM
vedlagt.
AM vs PM
Det gode ved det er, at Oracle regner ud, om det er AM eller PM, og viser den gældende meridiem-indikator.
Så her er, hvad der sker, når jeg ændrer tiden til en PM-værdi:
SELECT TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM')
FROM DUAL;
Resultat:
06:30:45 PM
Meridiem-indikatoren er nu PM, selvom min formatstreng er AM
. Oracle var smart nok til at vide, at tiden er post meridiem.
Store bogstaver vs. små bogstaver
Ændring af store og små bogstaver i formatelementet ændrer størrelsen på resultatet:
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;
Resultat:
Uppercase Lowercase Mixed ______________ ______________ ______________ 06:30:45 PM 06:30:45 pm 06:30:45 Pm
Prikker vs. Ingen prikker
Du kan inkludere prikker, hvis du foretrækker:
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;
Resultat:
Uppercase Lowercase Mixed ________________ ________________ ________________ 06:30:45 P.M. 06:30:45 p.m. 06:30:45 P.M.
Bemærk dog, at dette påvirkede meridiem-indikatoren for blandede tilfælde.
Dagens dato og klokkeslæt
Her sender jeg SYSDATE
for at få den aktuelle dato/tid:
SELECT
TO_CHAR(SYSDATE, 'HH:MI:SS A.M.')
FROM DUAL;
Resultat:
07:55:57 P.M.