V databázi Oracle TO_CHAR(datetime) funkce převede hodnotu data a času nebo intervalu na VARCHAR2 hodnotu ve formátu určeném formátem data.
Syntaxe
Syntaxe vypadá takto:
TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ]) Kde:
datetimemůže mít hodnotuDATE,TIMESTAMP,TIMESTAMPWITHTIMEZONE,TIMESTAMPWITHLOCALTIMEZONEdatový typintervalmůže mít hodnotuINTERVALDAYTOSECONDneboINTERVALYEARTOMONTHdatový typfmtje volitelný model formátu, který určuje, jak má být výsledek formátován'nlsparam'je volitelný argument, který určuje jazyk, ve kterém jsou vráceny názvy měsíců a dnů a zkratky.
Příklad
Zde je příklad k demonstraci:
SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL; Výsledek:
WED, 26 SEPTEMBER 2035
Takže vrátil datum, které bylo zadáno v prvním argumentu, ve formátu určeném druhým argumentem.
Druhý argument poskytuje model formátu. Model formátu se může skládat z jednoho nebo více prvků formátu. Například DY je prvek formátu, stejně jako DD , MONTH , atd.
V tomto úplném seznamu prvků formátu Datetime v Oracle najdete seznam prvků formátu, které lze použít k formátování hodnot datetime pomocí této funkce.
Výchozí formát
Pokud vynecháte fmt argument, bude výsledek převeden následovně:
DATEhodnoty jsou převedeny na hodnoty ve výchozím formátu data.TIMESTAMPaTIMESTAMPWITHLOCALTIMEZONEhodnoty jsou převedeny na hodnoty ve výchozím formátu časového razítka.TIMESTAMPWITHTIMEZONEhodnoty jsou převedeny na hodnoty ve výchozím časovém razítku s formátem časového pásma.- Hodnoty intervalů jsou převedeny na číselné vyjádření intervalového literálu.
Zde je příklad převodu DATE hodnota bez určení formátu:
SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL; Výsledek:
26/SEP/35
V tomto případě je výchozí formát data mé relace DD/MON/RR a výsledek to odráží. Vím, že toto je výchozí formát data mé relace, protože jsem se zeptal na V$NLS_PARAMETERS view, který mi ukazuje aktuální hodnotu parametrů NLS.
Pokud je potřebujete zkontrolovat, viz Jak zkontrolovat hodnoty parametrů NLS.
Chcete-li změnit výchozí formát data a času pro aktuální relaci, přečtěte si také část Jak změnit formát data relace.
Interval
Zde je příklad, který zobrazuje hodnotu intervalu ve výchozím formátu:
SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL; Výsledek:
+25-02
'nlsparam' Argument
'nlsparam' argument určuje jazyk, ve kterém jsou vráceny názvy měsíců a dnů a zkratky. Tento argument může mít následující tvar:
'NLS_DATE_LANGUAGE = language' Příklad:
SELECT
TO_CHAR(
DATE '2035-09-26',
'DY, DD MONTH YYYY',
'NLS_DATE_LANGUAGE = SPANISH'
)
FROM DUAL; Výsledek:
MIÉ, 26 SEPTIEMBRE 2035
Nulové argumenty
Předávání null výsledkem je null :
SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL; Výsledek:
null
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT prohlášení.
Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.
Chybí argument
Volání funkce bez předání jakýchkoli argumentů má za následek chybu:
SELECT TO_CHAR()
FROM DUAL; Výsledek:
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:
Předání příliš mnoha argumentů také vede k chybě:
SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL; Výsledek:
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: