
- •Лекция 4. Язык sql. Однострочные функции.
- •Функции
- •Примеры использования числовых функций
- •Символьные функции
- •Примеры использования функций для работы с датами
- •Модели формата даты и времени
- •Модели формата числа
- •Суффиксы, префиксы и другие элементы, влияющие на формат вывода
- •Примеры использования функций преобразования и моделей форматов
- •Пример использования to_char для преобразования чисел:
- •Вложенные однострочные функции
Примеры использования функций для работы с датами
Пример использования SYSDATE: Получить сегодняшнюю дату:
SELECT SYSDATE
FROM dual;
Результат:
SYSDATE
--------
06.10.03
В дальнейших примерах считать, что сегодняшняя дата: 06 октября 2003 года.
Пример использования арифметических операторов: Узнать, какое число было 10 дней назад и будет через 18 дней:
SELECT SYSDATE-10, SYSDATE+18
FROM dual;
Результат:
SYSDATE-10 SYSDATE+18
-------- --------
26.09.03 24.10.03
Пример использования ADD_MONTHS: Узнать, какое число будет через 9 месяцев:
SELECT ADD_MONTHS(SYSDATE, 9)
FROM dual;
Результат:
ADD_MONT
--------
06.07.04
Пример использования LAST_DAY: Какой день является последним днем текущего месяца и февраля 2005 года:
SELECT LAST_DAY(SYSDATE), LAST_DAY('01-02-2005')
FROM dual;
Результат:
LAST_DAY LAST_DAY
-------- --------
31.10.03 28.02.05
Пример использования MONTHS_BETWEEN: Сколько месяцев между текущим месяцем, 1 январем 2003 года, 6 январем 2004 года и 6 октябрем 2005 года:
SELECT MONTHS_BETWEEN(SYSDATE,'01-01-2003') one,
MONTHS_BETWEEN(SYSDATE,'06-01-2004') two,
MONTHS_BETWEEN(SYSDATE,'06-10-2005') three
FROM dual;
Результат:
ONE TWO THREE
--------- --------- ---------
9,1821658 -3 -24
Пример использования NEXT_DAY: На какой день приходится ближайший понедельник после сегодняшней даты:
SELECT NEXT_DAY(SYSDATE,1) one,
NEXT_DAY(SYSDATE,'mon') two,
NEXT_DAY(SYSDATE,'monday') three
FROM dual;
Результат:
ONE TWO THREE
-------- -------- --------
13.10.03 13.10.03 13.10.03
-- День недели можно задать с помощью любой из моделей формата даты, -- возвращающей день недели (см. далее таблицу моделей форматов). В данном -- примере в первом столбце день недели задается с помощью модели d, во -- втором – DY, в третьем – DAY. Обратите внимание, если Вы задаете день -- недели с помощью модели d, Вы должны знать, с какого дня производится -- нумерация дней недели Вашим сервером. Нумерация может производиться с -- понедельника (русская версия) или с воскресенья (американская версия).
Пример использования ROUND:
SELECT ROUND(to_date('27-09-2003','dd-mm-yyyy'),'year'),
ROUND(to_date('27-09-2003','dd-mm-yyyy'),'month'),
ROUND(to_date('27-09-2003','dd-mm-yyyy'),'day')
FROM dual;
Результат:
ROUND(TO ROUND(TO ROUND(TO
-------- -------- --------
01.01.04 01.10.03 28.09.03
-- Об использовании функции to_date будет рассказано далее в этой же лекции.
Пример использования TRUNC:
SELECT TRUNC(to_date('27-09-2003','dd-mm-yyyy'),'year'),
TRUNC(to_date('27-09-2003','dd-mm-yyyy'),'month'),
TRUNC(to_date('27-09-2003','dd-mm-yyyy'),'day')
FROM dual;
Результат:
TRUNC(TO TRUNC(TO TRUNC(TO
-------- -------- --------
01.01.03 01.09.03 22.09.03
-- Об использовании функции to_date будет рассказано далее в этой же лекции.
Функции преобразования
Функции преобразования преобразуют значения из одного типа данных в другой. В следующей таблице приведены некоторые из функций преобразования:
Функция |
Описание |
TO_CHAR(число|дата[, fmt]) |
Преобразует число или дату в символьную строку VARCHAR2 с моделью формата fmt. |
TO_NUMBER(char) |
Преобразует строку символов char содержащую цифры, в число. |
TO_DATE(char[, fmt]) |
Преобразует строку символов char с датой в значение типа DATE в соответствии с заданной моделью fmt. |
Модели формата
Модель формата – это символьный литерал, который описывает формат значения типа DATE или NUMBER, представленного в символьном виде и хранящегося в строке символов. Модель формата в любом случае заключается в апострофы. Вы можете использовать модель формата, чтобы указать, в каком формате Oracle должен возвратить вам значение из базы данных или в каком формате Вы предоставляете значение для помещения его в базу данных. Например, Вы можете пожелать, чтобы дата при выборке выводилась в виде: “13 October of 2003” или “2003, October, 13”. Заметьте, что модель формата не изменяет внутреннего представления значения в базе данных.