Таблица 2. Наиболее распространенные функции обработки календарных дат.
| Функция
| Возвращаемое значение
| Пример использования
| Результат(зависит от даты вычисления данного примера)
|
| sysdate
| Текущие дата и время
| select sysdate
from dual;
| 28-FEB-99 (при вызове 28 февраля 1999 года)
|
| last_day
| Последний день месяца
| select last_day(sysdate)
from dual;
| 31-MAR-99 (при вызове 12 марта 1999 года)
|
| add_months(d,n)
| Добавляет к дате d (или вычитает из нее) n месяцев
| select add_months(sysdate,2)
from dual;
| 18-MAY-99 (при вызове 18 марта 1999 года)
|
| months_between(f,s)
| Число месяцев между датой f и датой s
| select months_between(sysdate,
'12-MAR-99')
from dual;
| 13 (при вызове в апреле 1998 года)
|
| next_day(d,day)
| Ближайший указанный день недели day после даты d
| select next_day(sysdate,'Monday')
from dual;
| 05-JAN-98 (при вызове 30 декабря 1997 года)
|
Для работы с функциями обработки календарных дат надо знать собственно форматы представления дат. Поэтому далее приведем форматы представления дат в Oracle.
Таблица 3. Наиболее распространенные форматы представления дат.
| Функция
| Возвращаемое значение
| Пример использования
| Результат(зависит от даты вычисления данного примера)
|
| Y, YY или YYY
| Последние одна, две или три цифры календарного года
| select to_char(sysdate,'YYY')
from dual;
| 999 (для всех дней 1999 года)
|
| SYEAR или YEAR
| Полный номер календарного года; при использовании SYEAR перед датами до н.э. ставится минус
| select to_char(sysdate, 'SYEAR')
from dual;
| TWO THOUSAND EIGHT (для вызова
в 2008 г.)
|
| Q
| Квартал года (первый квартал продолжается с января по март)
| select to_char(sysdate,'Q')
from dual;
| 2 (для всех дней июня)
|
| MM
| Номер месяца (в формате 01-12, где 12 соответствует декабрю)
| select to_char(sysdate,'MM')
from dual;
| 12 (для всех дней декабря)
|
| RM
| Номер месяца римскими цифрами
| select to_char(sysdate,'RM')
from dual;
| IV (для всех дней апреля)
|
| Month
| Месяц в виде строки из девяти символов
| select to_char(sysdate, 'Month')
from dual;
| May и шесть пробелов (для всех дней мая)
|
| WW
| Номер недели в году
| select to_char(sysdate,'WW')
from dual;
| 24 (при вызове 13 июня 1998 года)
|
| W
| Номер недели в месяце
| select to_char(sysdate,'W')
from dual;
| 1 (при вызове 1 октября 1995 года)
|
| DDD
| Порядковый номер дня в году: 1 января — день номер 001, 1 февраля — 032 и т.д.
| select to_char(sysdate,'DDD')
from dual;
| 363 (при вызове 29 декабря 1999 года)
|
| DD
| День месяца
| select to_char(sysdate,'DD')
from dual;
| 04 (при вызове 4 октября)
|
| D
| День недели (в формате 1-7)
| select to_char(sysdate,'D')
from dual;
| 1 (при вызове 14 марта 1999 года)
|
| DY
| Сокращенное название дня недели
| select to_char(sysdate,'DY')
from dual;
| SUN (при вызове 28 марта 1999 года)
|
| НН или НН12
| Час по 12-часовой системе
| select to_char(sysdate,'HH')
from dual;
| 02 (в момент времени 02:08, т.е. в 2 часа 8 минут после полуночи)
|
| НН24
| Час по 24-часовой системе
| select to_char(sysdate,'HH24')
from dual;
| 14 (в 2 часа 8 минут пополудни, т.е. в 14:08)
|
| Ml
| Минуты (0-59)
| select to_char(sysdate,'MI')
from dual;
| 17 (в 16:17, т.е. в 4 часа 17 минут пополудни)
|
| SS
| Секунды (0-59)
| select to_char(sysdate,'SS')
from dual;
| 22 (в момент времени 11:03:22)
|
Следует привести команды, полезные при заполнении таблиц информацией из SQL скрипта, применять которые нужно, если настройки даты на своем компьютере отличаются от формата даты в скриптах. Параметры настройки даты на своем компьютере определяют командой
Такие настройки даты на моем компьютере. В скриптах же заполнения таблиц схемы «DEMO» формат даты «dd-mon-yyyy», причем месяц пишется на английском («JUN», «FEB» и т.д.). Поэтому мне для успешного заполнения таблиц схемы демо необходимо выполнить две команды:
Эти две команды присутствуют в начале скрипта создания предметной области DEMO.
Q3_9 Определим в днях разницу дат заказа покупки (order_date) покупателем и ее оплаты (ship_date)
21 строк выбрано.