В Oracle Database, TO_CHAR(datetime) функция преобразува стойност за дата и време или интервал в VARCHAR2 стойност във формата, посочен от формата на датата.
Синтаксис
Синтаксисът е така:
TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ]) Къде:
datetimeможе да бъде стойност наDATE,TIMESTAMP,TIMESTAMPWITHTIMEZONE,TIMESTAMPWITHLOCALTIMEZONEтип данниintervalможе да бъде стойност наINTERVALDAYTOSECOND, илиINTERVALYEARTOMONTHтип данниfmtе допълнителен модел на форматиране, който определя как трябва да бъде форматиран резултатът'nlsparam'е незадължителен аргумент, който определя езика, на който се връщат имената и съкращенията на месеци и дни.
Пример
Ето пример за демонстрация:
SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL; Резултат:
WED, 26 SEPTEMBER 2035
И така, той върна датата, предоставена в първия аргумент, във формата, посочен от втория аргумент.
Вторият аргумент предоставя модела на формата. Форматният модел може да се състои от един или повече форматни елементи. Например DY е форматен елемент, както и DD , MONTH и др.
Вижте този пълен списък с елементи за формат на дата и час в Oracle за списък с елементи на формат, които могат да се използват за форматиране на стойности за дата и час с тази функция.
Формат по подразбиране
Ако пропуснете fmt аргумент, резултатът ще бъде преобразуван по следния начин:
DATEстойностите се преобразуват в стойности във формат за дата по подразбиране.TIMESTAMPиTIMESTAMPWITHLOCALTIMEZONEстойностите се преобразуват в стойности в стандартния формат за времеви отпечатъци.TIMESTAMPWITHTIMEZONEстойностите се преобразуват в стойности в клеймото за време по подразбиране с формат на часовата зона.- Стойностите на интервала се преобразуват в числово представяне на интервалния литерал.
Ето пример за преобразуване на DATE стойност без посочване на формата:
SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL; Резултат:
26/SEP/35
В този случай форматът на датата по подразбиране на моята сесия е DD/MON/RR , и така резултатът отразява това. Знам, че това е форматът на датата по подразбиране на моята сесия, защото поисках V$NLS_PARAMETERS изглед, който ми показва текущата стойност на NLS параметрите.
Вижте как да проверите стойностите на NLS параметрите, ако трябва да ги проверите.
Вижте също как да промените формата на датата на вашата сесия, ако искате да промените формата за дата и час по подразбиране за текущата си сесия.
Интервал
Ето пример, който извежда стойност на интервал във формат по подразбиране:
SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL; Резултат:
+25-02
'nlsparam' Аргумент
'nlsparam' аргумент определя езика, на който се връщат имената и съкращенията на месеци и дни. Този аргумент може да има следната форма:
'NLS_DATE_LANGUAGE = language' Пример:
SELECT
TO_CHAR(
DATE '2035-09-26',
'DY, DD MONTH YYYY',
'NLS_DATE_LANGUAGE = SPANISH'
)
FROM DUAL; Резултат:
MIÉ, 26 SEPTIEMBRE 2035
Нулеви аргументи
Предаването на null води до null :
SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL; Резултат:
null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.
Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.
Липсващ аргумент
Извикването на функцията без предаване на аргументи води до грешка:
SELECT TO_CHAR()
FROM DUAL; Резултат:
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:
Предаването на твърде много аргументи също води до грешка:
SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL; Резултат:
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: