Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по ORACLE 2004 года.doc
Скачиваний:
26
Добавлен:
03.05.2015
Размер:
466.43 Кб
Скачать

Использование арифметических операторов с датами

Поскольку даты в базе данных хранятся в виде чисел, с помощью арифметических операторов можно выполнять с ними такие операции, как сложение и вычитание. Прибавлять и вычитать можно не только даты, но и числовые константы.

Арифметические операторы над датами

Операция

Результат

Описание

дата + число

дата

Прибавление количества дней к дате

дата – число

дата

Вычитание количества дней из даты

дата – дата

кол-во дней

Вычитание одной даты из другой

дата + число/24

дата

Прибавление к дате часов.

Пример.

Вывод номера фильма и длительность использования кассеты клиентом с номером фильма 11.

SQL> select filmid, (sysdate-vidacha) дней

2 from dogovor

3 where filmid = 11;

FILMID DNI

---------- ----------

11 140,301956

Функции для работы с датами

Эти функции работают с датами Oracle. Все Функции для работы с датами возвращают значение типа DATE, кроме функции MONTHS_BETWEEN, которая возвращает целое значение.

Функция

Назначение

MONTHS_BETWEEN(дата1, дата2)

Определение количества месяцев, разделяющих даты дата1 и дата2. Результат может быть положительным или отрицательным. Если дата1 позже даты2, результат положителен, а если дата1 более ранняя, чем дата2, результат отрицателен. Дробная часть результата представляет собой долю месяца.

ADD_MONTHS (дата, п)

К дате прибавляется n календарных месяцев; число п должно быть целым, но может быть отрицательным.

NEXT_DAY (дата, 'символ')

Определение даты ближайшего дня недели, заданного 'символом', после указанной даты. Аргумент 'символ' может задавать порядковый номер или название дня недели.

LAST_DAY (дата)

Определение последнего дня (даты) месяца, содержащего заданную дату.

ROUND(дата [,'fmf])

При отсутствии аргумента 'fmt' округляет до даты на момент полуночи (до целого числа суток). Если fmt= YEAR, определяет первый день года. Функция полезна для сравнения дат с разным временем суток.

TRUNC(дата [,'fmt'])

Если модель формата 'fmt' не задана, функция возвращает первый дня месяца, указанного в аргументе дата. Если fmt = YEAR, функция возвращает дату первого дня года, содержащего указанную дату. Функция полезна для отбрасывания части даты, содержащей время.

Пример.

Вывод номера фильма, даты выдачи кассеты, длительность использования кассеты клиентом в месяцах и даты возврата кассеты.

SQL> select filmid, vidacha,

2 MONTHS_BETWEEN(SYSDATE, vidacha) MONTHES,

3 ADD_MONTHS(vidacha,6) VOZVRAT

4 from dogovor;

FILMID VIDACHA MONTHES VOZVRAT

---------- -------- ---------- -------- -----------------------

11 01.01.03 4,65516017 01.07.03

Функции ROUND и TRUNC могут применяться к числовым значениям и датам. Если они используются для дат, то округление или усечение значений производится в соответствии с заданной моделью формата. Следовательно, можно округлять даты до целого года или месяца.