När du hämtar dagen och/eller månadsnamnet från ett datum i Oracle, kanske du vill returnera det med versaler, gemener eller skiftläge.
Lyckligtvis är detta lätt att göra. Resultatet återspeglar versaler i din formatmodell.
Exempel
När du använder TO_CHAR()
för att returnera datumdelar från ett datumvärde använder du ett eller flera formatelement för att skapa en formatmodell. Den här formatmodellen avgör hur datumet formateras när det returneras.
Vi kan använda DAY
och MONTH
formatelement för att returnera dagens namn respektive månadsnamn.
Men viktigare är att versalerna vi använder för dessa formatelement avgör hur resultatet används.
Exempel:
SELECT
TO_CHAR( DATE '2037-12-03', 'month' ) AS "month",
TO_CHAR( DATE '2037-12-03', 'Month' ) AS "Month",
TO_CHAR( DATE '2037-12-03', 'MONTH' ) AS "MONTH"
FROM DUAL;
Resultat:
month Month MONTH ____________ ____________ ____________ december December DECEMBER
Det är samma sak för DAY
formatelement:
SELECT
TO_CHAR( DATE '2037-12-03', 'day' ) AS "day",
TO_CHAR( DATE '2037-12-03', 'Day' ) AS "Day",
TO_CHAR( DATE '2037-12-03', 'DAY' ) AS "DAY"
FROM DUAL;
Resultat:
day Day DAY ____________ ____________ ____________ thursday Thursday THURSDAY
Det gäller även när du returnerar den förkortade versionen av dagen eller månaden.
Exempel:
SELECT
TO_CHAR( DATE '2037-12-03', 'mon' ) AS "mon",
TO_CHAR( DATE '2037-12-03', 'Mon' ) AS "Mon",
TO_CHAR( DATE '2037-12-03', 'MON' ) AS "MON"
FROM DUAL;
Resultat:
mon Mon MON ______ ______ ______ dec Dec DEC
Och:
SELECT
TO_CHAR( DATE '2037-12-03', 'dy' ) AS "dy",
TO_CHAR( DATE '2037-12-03', 'Dy' ) AS "Dy",
TO_CHAR( DATE '2037-12-03', 'DY' ) AS "DY"
FROM DUAL;
Resultat:
dy Dy DY ______ ______ ______ thu Thu THU
Året
Ett kanske mindre känt faktum är att Oracle Database också tillhandahåller formatelement som återger hela året preciserat. Närmare bestämt YEAR
och SYEAR
(för att tillgodose eller före BC datum).
Användningen av versaler i dessa formatelement påverkar också utdata:
SELECT
TO_CHAR( DATE '2037-12-03', 'year' ) AS "year",
TO_CHAR( DATE '2037-12-03', 'Year' ) AS "Year",
TO_CHAR( DATE '2037-12-03', 'YEAR' ) AS "YEAR"
FROM DUAL;
Resultat:
year Year YEAR ______________________ ______________________ ______________________ twenty thirty-seven Twenty Thirty-Seven TWENTY THIRTY-SEVEN
Och:
SELECT
TO_CHAR( DATE '-2037-12-03', 'syear' ) AS "syear",
TO_CHAR( DATE '-2037-12-03', 'Syear' ) AS "Syear",
TO_CHAR( DATE '-2037-12-03', 'SYEAR' ) AS "SYEAR"
FROM DUAL;
Resultat:
syear Syear SYEAR _______________________ _______________________ _______________________ -twenty thirty-seven -Twenty Thirty-Seven -TWENTY THIRTY-SEVEN
När du använder skiftläge med Syear
formatelement måste vi komma ihåg att endast det första tecknet – S
tecken – står med versaler och alla återstående tecken är gemener (inklusive Y
tecken):