Выбрать главу

вас с форматированием значений столбца duration:

□ SELECT *

FROM promotions;

PROMOTION ID NAME DURATION

1 10% o f f Z F ile s +003 00:00:00.0000

2 20% o f f Pop 3 +000 02:00:00.0000

3 30% o f f Modern Science +000 00:25:00.0000

4 20% o f f Tank War +00000:00:45.0000

5 10% o f f Chemistry +003 02:25:00.0000

6 20% o f f C re a tiv e Y e ll +003 02:25:45.0000

7 15% o f f My Front Line +123 02:25:45.1200

Функции, связанные современными интервалами

Есть несколько функций, позволяющих вам получать временные интервалы

и обрабатывать их (см. таблицу 4.9).

Таблица 4.9. Функции, связанные с временными интервалами

Функция Описание

NUMT0DSINTERVAL(x, Конвертирует число х в INTERVAL DAY ТО SECOND, где

единицы_интервала) интервал для хуказан в параметре единицы_интер-

вала, который может принимать значения DAY, HOUR,

MINUTE ИЛИ SECOND.

Конвертирует ЧИСЛО х В INTERVAL YEAR ТО MONTH, где

интервал для х указан в параметре единицы_интер-

вала, который может принимать значения YEAR или

MONTH.

Конвертирует строку х В INTERVAL DAY ТО SECOND.

Конвертирует строку х в INTERVAL YEAR ТО MONTH.

NUMT0YMINTERVAL( х ,

единицы_интервала)

T0_DSINTERVAL(x)

T0_YMINTERVAL(x)

N UM T O D S IN T E R V A L ()

Функция NUMT0DSINTERVAL(x, единицы_интервала) может использоваться для

конвертирования числа х в INTERVAL DAY ТО SECOND, где интервал для х указан

в параметре единицы_интервала. Можно установить значение едини-

цы_интервала равным DAY, HOUR, MINUTE или SECOND:

□ SELECT

NUMT0DSINTERVAL(1.5, 'DAY'),

NUMT0DSINTERVAL(3.25, ‘HOUR’),

NUMT0DSINTERVAL(5, 'MINUTE’),

Хранение и обработка дат и времени 171

NUMTODSINTERVAL(10.123456789, ' SECOND')

FROM dual;

NUMT0DSINTERVAL(1.5 ,’ DAY’ ),

NUMT0DSINTERVAL(3.25,’ HOUR’ ),

NUMT0DSINTERVAL(5,’ MINUTE’ ),

NUMT0DSINTERVALO0.123456789, ’ SECOND’ )

+000000001 1 2 : 0 0 : 00.000000 00 0

+000000000 03:15:00.000000000

+000000000 00:05:00.000000000

+000000000 00:00:10.123456789

N UM T O YM IN T E R V A L ()

Функцию NUMT0YMINTERVAL(x, единицы_интервала) можно использовать для

конвертирования числа х в INTERVAL YEAR ТО MONTH, где интервал для х указывается

в параметре _единицы_измерепия. Этот параметр может принимать

значения YEAR или MONTH:

□ SELECT

NUMT0YMINTERVAL( 1.5, 'YEAR'),

NUMT0YMINTERVAL(3.25, ' MONTH’ )

FROM dual;

NUMT0YMINTERVAL(1.5 ,’ YEAR’ ),

NUMT0YMINTERVAL(3.25, ’ MONTH’ )

+000000001-06

+000000000-03

Итоги

В этой главе вы узнали, что:

■ Переменные дата-время можно хранить в типе данных DATE. В типе

DATE хранятся значения столетия, все четыре цифры года, месяц,

день, час (в 24-часовом формате), минуты и секунды.

■ Можно использовать функции T0_CHAR() и T0_DATE() для конвертирования

из строк в даты и время и обратно.

■ В базе данных Oracle всегда хранятся все четыре цифры года, а предлагаемые

ей две последние цифры года интерпретируются в соответствии

с набором правил. Лучше всего, конечно, всегда предоставлять

все четыре цифры года, чтобы позже не думать, о каком годе

идет речь.

■ Можно использовать функции для получения или обработки дат и

времени. Примером может служить функция ADD_M0NTH(x, у), возвращающая

результат добавления у месяцев к дате х.

172 Глава 5

■ В базе данных Oracle9i появилась возможность использовать различные

часовые пояса. Часовой пояс - это просто смещение местного

времени по отношению к времени по Гринвичу, Великобритания.

Когда-то время по Гринвичу было известно как Гринвичское время

(GMT), но теперь его принято называть Всеобщим скоординированным

время (UTC). Часовой пояс специфицируется либо заданием

смещения относительно UTC, либо по имени региона.

■ В базе данных Oracle9i появилась возможность хранить переменные

метка даты/времени (timestamps). В переменных метка даты/времени

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

час (в 24-часовом формате), минуты и секунды. Преимущество переменных

метка дат/времени перед DATE состоит в том, что в них можно

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

■ В базе данных Oracle9i появилась возможность управлять временными

интервалами, которые позволяют хранить в них продолжительность

отрезков времени. Примером временного интервала может

служить 1 год и 3 мес.

Глава 6

Подзапросы

Типы подзапросов

Существует два основных типа подзапросов.

■ Однострочные подзапросы Возвращают во внешний оператор SQL

ноль строк или одну строку. Возможен особый случай однострочного

подзапроса, который содержит ровно один столбец; этот тип называют

скалярным подзапросом.

■ Многострочные подзапросы Возвращают во внешний оператор SQL

одну строку или несколько строк.

Кроме того, есть три подтипа подзапросов, которые могут возвращать