SQL> SELECT SYSDATE, ROUND(SYSDATE, 'YEAR') ROUND, TRUNC(SYSDATE, 'YEAR') TRUNC
2 FROM dual;
SYSDATE ROUND TRUNC
-------- -------- --------
01.10.01 01.01.02 01.01.01
Функции преобразования принимают в качестве аргумента значения данных одного типа и возвращают эти же значения, преобразованные к другому типу данных.
Функция |
Описание |
TO_CHAR (число | дата[, ‘fmt’]) |
Преобразует число или дату в символьную строку VARCHAR2 в соответствии с моделью формата |
TO_NUMBER (символ) |
Преобразует строку символов в число |
TO_DATE (символ[, ‘fmt’]) |
Преобразует строку символов в дату в соответствии с моделью формата |
SQL> SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY HH24:MI:SS') FROM dual;
TO_CHAR(SYSDATE,'DD
-------------------
01/10/2001 14:44:03
SQL> SELECT TO_CHAR(TO_DATE('01.10.01', 'DD.MM.YY'),
2 'Year, Month, DD') CURRENT_DATE FROM dual;
CURRENT_DATE
-----------------------------------------------------
Two Thousand One, October , 01
При преобразовании символьной строки в дату и наоборот используется модель формата (Таблица 1).
Элемент формата RR позволяет менять столетие возвращаемого значения, в зависимости от двух последних цифр текущего года и двух цифр указанного двузначного года.
Две последние цифры текущего года |
Две цифры указанного двузначного года |
|
0 – 49 |
50 - 99 |
|
0 – 49 |
Возвращаемый год относится к текущему столетию |
Возвращаемый год относится к столетию перед текущим |
50 - 99 |
Возвращаемый год относится к столетию после текущего |
Возвращаемый год относится к текущему столетию |
SQL> SELECT TO_CHAR(TO_DATE('10', 'RR'), 'YYYY') FROM dual;
TO_C
----
2010
SQL> SELECT TO_CHAR(TO_DATE('50', 'RR'), 'YYYY') FROM dual;
TO_C
----
1950
При преобразовании символьной строки в число и наоборот используются следующие элементы модели формата:
Элемент |
Описание |
Пример |
Результат |
9 |
Представляет одну цифру |
TO_CHAR(1234, '99999') |
1234 |
0 |
Выводит ведущий ноль |
TO_CHAR(1234, '09999') |
01234 |
$ |
Обозначает плавающий символ доллара |
TO_CHAR(1234, '$9999') |
$1234 |
L |
Обозначает местную валюту |
TO_CHAR(1234, 'L9999') |
Р.1234 |
. |
Обозначает позицию десятичной точки |
TO_CHAR(1234, '9999.99') |
1234.00 |
, |
Обозначает разделитель тысяч |
TO_CHAR(1234, '9,999') |
1,234 |
MI |
Выводит для отрицательных значений знак минуса справа |
TO_CHAR(-1234, '9999MI') |
1234- |
PR |
Заключает отрицательные значения в скобки <> |
TO_CHAR(-1234, '9999PR') |
<1234> |
EEEE |
Представление числа с плавающей точкой |
TO_CHAR(1234, '9.999EEEE') |
1.234E+03 |
V |
Умножает число на 10 указанное количество раз |
TO_CHAR(1234, '9999V999') |
1234000 |
В модели формата можно использовать дополнительные элементы, влияющие на формат вывода:
§ Префикс FM подавляет конечные пробелы в названиях месяцев и дней
§ Суффикс TH выводит порядковый номер числа
§ Суффикс SP выводит число словами
SQL> SELECT TO_CHAR(SYSDATE, 'DD "of" MONTH') CURRENT_DATE
2 FROM dual;
CURRENT_DATE
---------------
01 of OCTOBER
SQL> SELECT TO_CHAR(SYSDATE, 'FMDD "of" MONTH') CURRENT_DATE
2 FROM dual;
CURRENT_DATE
---------------
1 of OCTOBER
SQL> SELECT TO_CHAR(SYSDATE, 'FMDDTH "of" MONTH') CURRENT_DATE
2 FROM dual;
CURRENT_DATE
-----------------
1ST of OCTOBER
SQL> SELECT TO_CHAR(SYSDATE, 'FMDDTHSP "of" MONTH') CURRENT_DATE
2 FROM dual;
CURRENT_DATE
---------------------------
FIRST of OCTOBER
1. Вильям Дж. Пэйдж Использование Oracle8/8i: пер. с англ. – М.: Издательский дом "Вильямс", 1999.
2. Джеймс Р. Грофф, Пол Н. Вайнберг SQL: полное руководство: пер. с англ. - -К.: Издательская группа BHV, 1998.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.