När du använder TO_CHAR()
funktion för att formatera ett datetime-värde i Oracle Database, kan du lägga till meridiem-indikatorn (AM/PM) genom att helt enkelt lägga till antingen AM
eller PM
till din formatmodell.
Oracle visar sedan lämplig meridiem-indikator, beroende på om tidsvärdet är AM eller PM.
Du kan tillhandahålla den i valfri versal eller gemen, och med eller utan punkter (t.ex. AM
, A.M.
am
, a.m
, etc). Oracle kommer då att visa meridiem-indikatorn som specificerats.
Exempel
Här är ett exempel att visa:
SELECT TO_CHAR(timestamp '2030-12-30 08:30:45', 'HH:MI:SS AM')
FROM DUAL;
Resultat:
08:30:45 AM
I det här fallet är tiden ante meridiem, så resultatet har AM
bifogas.
AM vs PM
Det som är bra med det är att Oracle räknar ut om det är AM eller PM, och visar den tillämpliga meridiem-indikatorn.
Så här är vad som händer när jag ändrar tiden till ett PM-värde:
SELECT TO_CHAR(timestamp '2030-12-30 18:30:45', 'HH:MI:SS AM')
FROM DUAL;
Resultat:
06:30:45 PM
Meridiem-indikatorn är nu PM, även om min formatsträng är AM
. Oracle var smart nog att veta att tiden är post meridiem.
Verlor vs gemener
Ändra skiftläge för formatelementet ändrar skiftläge för 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
Prickar vs Inga prickar
Du kan inkludera prickar om du föredrar:
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.
Observera dock att detta påverkade meridiemindikatorn för blandade fall.
Dagens datum och tid
Här skickar jag SYSDATE
för att få aktuellt datum/tid:
SELECT
TO_CHAR(SYSDATE, 'HH:MI:SS A.M.')
FROM DUAL;
Resultat:
07:55:57 P.M.