вас с форматированием значений столбца 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
одну строку или несколько строк.
Кроме того, есть три подтипа подзапросов, которые могут возвращать