Функция EXTRACT позволяет извлечь следующие значения из TIMESTAMP:
MONTH — месяц;
YEAR — год;
MINUTE — минута;
SECOND — секунда;
TIMEZONE_HOUR — час часовой зоны;
TIMEZONE_MINUTE — минута часовой зоны;
TIMEZONE_REGION — регион.
Пример извлечения TIMEZONE_HOUR:
Рисунок 201. Использование TO_CHAR и NEW_TIME
Рисунок 202. Использование EXTRACT c TIMESTAMP
При преобразовании из текстового значения в TIMESTAMPнеобходимо правильно задавать формат преобразования.
Функция EXTRACT может быть применена не только к колонкам типа данных TIMESTAMP, но и к обычному типу DATE.
Как прибавить или отнять заданный интервал времени из TIMESTAMP?
Для этого можно воспользоваться специальной директивой INTERVAL. Как она работает, лучше разобрать на примерах.
Прибавляем интервал 24 часа к заданной дате-времени.
Прибавляем интервал 54 минуты к заданной дате-времени.
Прибавляем интервал 3 дня к заданной дате-времени.
Прибавляем 30 секунд к заданной дате-времени.
Прибавляем 3 месяца к заданной дате-времени.
Необходимо ли всегда использовать тип TIMESTAMP или же можно использовать тип DATE в некоторых задачах?
Тип TIMESTAMP предоставляет значительно больше возможностей, чем DATE, но если вам достаточно DATE для решения ваших задач, то используйте DATE.
Контрольные вопросы и задания для самостоятельного выполнения
1. Объясните принципиальные отличия между типами данных TImeStamp и DATE.
2. Создайте таблицу из двух полей: первое поле — идентификатор, второе — TIMESTAMP (ID, TMS).
3. Добавьте в таблицу запись с идентификатором 1 и текущей датой-временем.
4. С помощью запроса извлеките из таблицы идентификатор «дата-время», выберите час, минуту, секунду из текущего значения «дата-время».
Шаг 71. Фрагментация таблиц, секционирование
ORACLE поддерживает секционирование таблиц. Секционирование позволяет разделить большую таблицу на более маленькие части по определенному логическому принципу.
Примечание.
Для данного шага необходима установка дополнительного программного обеспечения.
Фрагментация (секционирование) — это разделение таблицы или индекса на несколько логически связанных частей, фрагментов, секций с неким общим признаком.
Допустим, у нас есть таблица начислений, мы разбиваем эту таблицу на множество секций, например по начислениям за каждый месяц.
Кому и зачем это нужно? Вопрос с секционированием таблиц тесно связан с другим важным вопросом — вопросом масштабируемости проекта.
С помощью фрагментации появляется возможность управления фрагментами (секциями) в больших таблицах, то есть часть ненужных нам данных в текущий момент можно перенести на сторонний носитель.
Оставить для работы, для оптимального доступа к данным только лишь необходимые нам в сейчас секции таблицы.
Также очень часто возникает необходимость быстрого построения индекса по заданному фрагменту, а не по всей таблице.
Для решения данных задач в ORACLE используется фрагментация.
Итак, для демонстрации перечисленных возможностей фрагментации подготовим небольшой тестовый пример.
Для выполнения данного примера нам потребуется войти в систему под пользователем (SYS) с правами администратора.
Создадим три независимых табличных пространства, они нам понадобятся для демонстрационных примеров.
В ORACLE используется три типа фрагментации (партицирования) для таблиц.
Фрагментация по диапазону значений
Данные, относящиеся к таблицам, где значения в заданных колонках относятся к некоторому диапазону, распределяются по соответствующим фрагментам (секциям) таблицы.
Например, все проводки 2001—2002 годов помещаются в первую секцию, за 2002—2003 годы во вторую и т. д.
Фрагментация по списку значений
Фрагмент (секция) определяется по элементу списка. Такой способ фрагментации идеально подходит, когда в заданной колонке используется ограниченное число значений.
Фрагментация с использованием хэш-функции
Фагментация по данным заданных столбцов таблицы. ORACLE вычисляет значение специальной хэш-функции, на основании которого определяет, в какой именно фрагмент таблицы поместить заданную запись.
Читать дальше
Конец ознакомительного отрывка
Купить книгу