Dit artikel bevat veelvoorkomende voorbeelden van het formatteren van datums in Oracle Database.
Het standaard datumformaat voor uw sessie wordt bepaald door verschillende NLS-initialisatieparameters (hier leest u hoe u ze kunt controleren). U kunt profiteren van deze parameters om lokale opmaak uit te voeren.
U kunt ook functies gebruiken zoals TO_CHAR(number)
om datums naar een tekenreeks te converteren en ze meteen precies zo op te maken als u wilt.
Standaard datumnotatie
Wanneer u een datum in Oracle retourneert, wordt deze standaard geretourneerd in de standaard datumnotatie voor de huidige sessie.
Voorbeeld:
SELECT DATE '2030-12-10' FROM DUAL;
Resultaat:
10/DEC/30
In dit geval is het standaard datumformaat van mijn sessie DD/MON/RR
, en dus weerspiegelt het resultaat dat.
U kunt het formaat wijzigen door ofwel de NLS_TERRITORY
parameter (die impliciet andere parameters wijzigt, zoals datetime-parameters), of het wijzigen van de NLS_DATE_FORMAT
parameter direct.
Dit gebeurt er als ik de NLS_TERRITORY
wijzig parameter naar een ander gebied:
ALTER SESSION SET NLS_TERRITORY = 'Germany';
SELECT DATE '2030-12-10' FROM DUAL;
Resultaat:
10.12.30
De standaard datumnotatie is bijgewerkt om de notatie voor die landinstelling weer te geven.
Er zijn ook andere datetime NLS-parameters, zoals NLS_TIME_FORMAT
, NLS_TIME_TZ_FORMAT
, NLS_TIMESTAMP_FORMAT
, en NLS_TIMESTAMP_TZ_FORMAT
waar u op moet letten bij het wijzigen van datum- en tijdnotaties.
Zie ook Hoe u de datumnotatie van uw sessie kunt wijzigen als u de standaard datum-/tijdnotatie voor uw huidige sessie wilt wijzigen.
De TO_CHAR()
Functie
Thij TO_CHAR(datetime)
functie accepteert een datetime-waarde en retourneert een tekenreeks die is opgemaakt op een manier die u opgeeft.
Hier is een snel voorbeeld:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
Resultaat:
Wed, 26 September 2035
Hier retourneerde de functie de datum die was opgegeven in het eerste argument, in het formaat gespecificeerd door het tweede argument.
Het tweede argument levert het formaatmodel. Het formaatmodel kan uit één of meerdere formaatelementen bestaan. Bijvoorbeeld Dy
is een formaatelement, net als DD
, Month
, enz.
Als u geen indeling opgeeft, wordt deze geretourneerd met de standaardindeling voor de sessie.
Bekijk deze volledige lijst met datum/tijd-indelingselementen in Oracle voor een lijst met opmaakelementen die kunnen worden gebruikt om datum/tijd-waarden op te maken met deze functie.
Hieronder staan meer specifieke voorbeelden.
Retourneer de naam van de dag
Indien nodig kunt u afzonderlijke datumdelen retourneren. U kunt bijvoorbeeld alleen de naam van de dag, alleen de naam van de maand, enz. retourneren. Het enige dat u hoeft te doen, is het toepasselijke formaatelement gebruiken als het enige formaatelement in uw formaatmodel.
Hier is een voorbeeld van het retourneren van de dagnaam:
SELECT TO_CHAR(DATE '2035-09-26', 'Day')
FROM DUAL;
Resultaat:
Wednesday
In dit geval heb ik de volledige dagnaam geretourneerd.
We kunnen Dy
. gebruiken zoals in het eerdere voorbeeld om de korte dagnaam te retourneren:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy')
FROM DUAL;
Resultaat:
Wed
Retourneer de naam van de maand
Hier is een voorbeeld van het retourneren van de maandnaam:
SELECT TO_CHAR(DATE '2035-09-26', 'Month')
FROM DUAL;
Resultaat:
September
En de korte naam van de maand:
SELECT TO_CHAR(DATE '2035-09-26', 'Mon')
FROM DUAL;
Resultaat:
September
Hoofdlettergevoeligheid
In de vorige voorbeelden hebben we de eerste letter voor de dag- en maandnamen met een hoofdletter geschreven.
We kunnen ook alle hoofdletters gebruiken om de namen van de dag en de maand in hoofdletters terug te geven, en alle kleine letters om ze in kleine letters terug te geven.
SELECT
TO_CHAR(DATE '2035-09-26', 'DY, Dy, dy')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'DAY, Day, day')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MON, Mon, mon')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MONTH, Month, month')
FROM DUAL;
Resultaat:
WED, Wed, wed WEDNESDAY, Wednesday, wednesday SEP, Sep, sep SEPTEMBER, September, september
Taal
De NLS_DATE_LANGUAGE
parameter wordt gebruikt om de taal te bepalen van de datumdelen die worden gespeld (zoals dagnamen en maandnamen). De standaardwaarde van deze parameter is afgeleid van de NLS_LANGUAGE
parameter.
Hier is een voorbeeld van het bijwerken van de NLS_DATE_LANGUAGE
parameter en retourneert vervolgens een geformatteerde datum die de naam van de dag en de maand bevat:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'Spanish';
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
Resultaat:
Mié, 26 Septiembre 2035
De taal kan ook expliciet worden gespecificeerd vanuit de TO_CHAR()
zelf functioneren. Als u dit doet, kunt u de standaardtaalinstellingen voor de huidige sessie tijdelijk overschrijven, zonder deze instellingen te beïnvloeden.
Voorbeeld:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'English';
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY',
'NLS_DATE_LANGUAGE = Spanish'
)
FROM DUAL;
Resultaat:
Mié, 26 Septiembre 2035
In dit voorbeeld heb ik mijn huidige sessie ingesteld om Engels te gebruiken en heb ik vervolgens een query uitgevoerd om een datum in het Spaans uit te voeren.
Zoals eerder vermeld, had het uitvoeren van de datum in het Spaans geen invloed op de Engelse instelling. Om dit aan te tonen, heb ik onmiddellijk daarna de volgende query uitgevoerd (zonder de NLS_DATE_LANGUAGE
te wijzigen parameter).
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY'
)
FROM DUAL;
Resultaat:
Wed, 26 September 2035
Zoals verwacht is het resultaat in het Engels, de standaardtaal voor de huidige sessie.