sql >> Database teknologi >  >> RDS >> Oracle

TO_CHAR(datotid) Funktion i Oracle

I Oracle Database er TO_CHAR(datetime) funktion konverterer en datetime eller intervalværdi til en VARCHAR2 værdi i formatet angivet af datoformatet.

Syntaks

Syntaksen ser sådan ud:

TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])

Hvor:

  • datetime kan være en værdi på DATE , TIMESTAMP , TIMESTAMP WITH TIME ZONE , TIMESTAMP WITH LOCAL TIME ZONE datatype
  • interval kan være en værdi på INTERVAL DAY TO SECOND eller INTERVAL YEAR TO MONTH datatype
  • fmt er en valgfri formatmodel, der specificerer, hvordan resultatet skal formateres
  • 'nlsparam' er et valgfrit argument, der angiver det sprog, som måneds- og dagsnavne og forkortelser returneres på.

Eksempel

Her er et eksempel til demonstration:

SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL;

Resultat:

WED, 26 SEPTEMBER 2035

Så den returnerede datoen, der blev angivet i det første argument, i formatet angivet af det andet argument.

Det andet argument giver formatmodellen. Formatmodellen kan bestå af et eller flere formatelementer. For eksempel DY er et formatelement, ligesom DD er , MONTH osv.

Se denne fulde liste over Datetime Format Elements i Oracle for en liste over formatelementer, der kan bruges til at formatere datetime-værdier med denne funktion.

Standardformat

Hvis du udelader fmt argument, vil resultatet blive konverteret som følger:

  • DATE værdier konverteres til værdier i standarddatoformatet.
  • TIMESTAMP og TIMESTAMP WITH LOCAL TIME ZONE værdier konverteres til værdier i standardtidsstempelformatet.
  • TIMESTAMP WITH TIME ZONE værdier konverteres til værdier i standardtidsstemplet med tidszoneformat.
  • Intervalværdier konverteres til den numeriske repræsentation af intervalliteralen.

Her er et eksempel på en konvertering af en DATE værdi uden at angive formatet:

SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL;

Resultat:

26/SEP/35

I dette tilfælde er min sessions standarddatoformat DD/MON/RR , og så afspejler resultatet det. Jeg ved, at dette er min sessions standarddatoformat, fordi jeg forespurgte V$NLS_PARAMETERS visning, som viser mig den aktuelle værdi af NLS-parametrene.

Se, hvordan du kontrollerer værdierne for NLS-parametrene, hvis du har brug for at kontrollere dem.

Se også, hvordan du ændrer din sessions datoformat, hvis du vil ændre standard dato-tidsformat for din aktuelle session.

Interval

Her er et eksempel, der udsender en intervalværdi i standardformatet:

SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL;

Resultat:

+25-02

'nlsparam' Argument

'nlsparam' argument angiver det sprog, som måneds- og dagnavne og forkortelser returneres på. Dette argument kan have følgende form:

'NLS_DATE_LANGUAGE = language'

Eksempel:

SELECT 
    TO_CHAR(
        DATE '2035-09-26', 
        'DY, DD MONTH YYYY',
        'NLS_DATE_LANGUAGE = SPANISH'
    )
FROM DUAL;

Resultat:

MIÉ, 26 SEPTIEMBRE 2035

Nul-argumenter

Sender null resulterer i null :

SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL;

Resultat:

null

Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null opstår som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Manglende argument

Kaldning af funktionen uden at sende nogen argumenter, resulterer i en fejl:

SELECT TO_CHAR()
FROM DUAL;

Resultat:

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:

Hvis du sender for mange argumenter, resulterer det også i en fejl:

SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL;

Resultat:

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:

  1. null vs tom streng i Oracle

  2. Fix "Kan ikke installere i Homebrew på ARM-processor i Intels standardpræfiks (/usr/local)!"

  3. Oracle database backup:Type backup og backup strategi

  4. Oracle erklæring