sql >> Databasteknik >  >> RDS >> Oracle

Hur man lägger till Meridiem Indicator (AM/PM) till ett tidsvärde i Oracle

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.

  1. kolumn inte tillåten här fel i INSERT-satsen

  2. Hur får man tabelldefinition i Oracle?

  3. MySQL Insert-frågan fungerar inte med WHERE-satsen

  4. Hur stänger jag av Oracle-lösenordets utgång?