In Oracle Database, de TO_CHAR(datetime)
functie converteert een datetime of intervalwaarde naar een VARCHAR2
waarde in het formaat gespecificeerd door het datumformaat.
Syntaxis
De syntaxis gaat als volgt:
TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])
Waar:
datetime
kan een waarde zijn vanDATE
,TIMESTAMP
,TIMESTAMP
WITH
TIME
ZONE
,TIMESTAMP
WITH
LOCAL
TIME
ZONE
gegevenstypeinterval
kan een waarde zijn vanINTERVAL
DAY
TO
SECOND
, ofINTERVAL
YEAR
TO
MONTH
gegevenstypefmt
is een optioneel formaatmodel dat specificeert hoe het resultaat moet worden opgemaakt'nlsparam'
is een optioneel argument dat de taal specificeert waarin maand- en dagnamen en afkortingen worden geretourneerd.
Voorbeeld
Hier is een voorbeeld om te demonstreren:
SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL;
Resultaat:
WED, 26 SEPTEMBER 2035
Het gaf dus de datum terug die in het eerste argument was opgegeven, 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.
Zie 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.
Standaardformaat
Als u de fmt
. weglaat argument, wordt het resultaat als volgt geconverteerd:
DATE
waarden worden geconverteerd naar waarden in de standaard datumnotatie.TIMESTAMP
enTIMESTAMP
WITH
LOCAL
TIME
ZONE
waarden worden geconverteerd naar waarden in het standaard tijdstempelformaat.TIMESTAMP
WITH
TIME
ZONE
waarden worden geconverteerd naar waarden in de standaard tijdstempel met tijdzone-indeling.- Intervalwaarden worden geconverteerd naar de numerieke weergave van de letterlijke interval.
Hier is een voorbeeld van het converteren van een DATE
waarde zonder het formaat op te geven:
SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL;
Resultaat:
26/SEP/35
In dit geval is het standaard datumformaat van mijn sessie DD/MON/RR
, en dus weerspiegelt het resultaat dat. Ik weet dat dit de standaard datumnotatie van mijn sessie is omdat ik de V$NLS_PARAMETERS
heb opgevraagd weergave, die me de huidige waarde van de NLS-parameters laat zien.
Zie Hoe u de waarden van de NLS-parameters kunt controleren als u ze moet controleren.
Zie ook Hoe u de datumnotatie van uw sessie kunt wijzigen als u de standaard datum-/tijdnotatie voor uw huidige sessie wilt wijzigen.
Interval
Hier is een voorbeeld dat een intervalwaarde in het standaardformaat uitvoert:
SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL;
Resultaat:
+25-02
De 'nlsparam'
Argument
De 'nlsparam'
argument specificeert de taal waarin maand- en dagnamen en afkortingen worden geretourneerd. Dit argument kan de volgende vorm hebben:
'NLS_DATE_LANGUAGE = language'
Voorbeeld:
SELECT
TO_CHAR(
DATE '2035-09-26',
'DY, DD MONTH YYYY',
'NLS_DATE_LANGUAGE = SPANISH'
)
FROM DUAL;
Resultaat:
MIÉ, 26 SEPTIEMBRE 2035
Nullargumenten
Doorgeven van null
resulteert in null
:
SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL;
Resultaat:
null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null
treedt op als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Ontbrekend argument
Het aanroepen van de functie zonder argumenten door te geven, resulteert in een fout:
SELECT TO_CHAR()
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT TO_CHAR() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Het doorgeven van te veel argumenten resulteert ook in een fout:
SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' ) FROM DUAL Error at Command Line : 1 Column : 72 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: