Итак, наконец-то решил опубликовать статью о языке PL/SQL. Не всегда у меня получается публиковать регулярно подобные статьи – надо будет хотя бы один раз в неделю это делать, чтобы быстрее разделаться с этими типами данных. Как вы догадались – сегодня опять будет статья о этих типах данных. Маленькая зато статейка, про операции с типами дата-время и интервальными типами. А также – будут рассмотрены вопросы усечения точности.
Сейчас допишу статью – и пойду смотреть мультики (что-то за прошлую неделю просмотрел довольно много фильмов и мультов). Сегодня решил посмотреть мультфильм рио, думаю – всем он уже знаком по рекламе. Если вдруг нет – то обязательно зайдите на сайт, там можно подробную информацию про него найти. Кстати, на сайте можно найти ссылку на скачивание этого мультика.
Арифметические операции со значениями даты-времени и интервальными значениям:
Проще всего описать арифметические операции с интервальными значениями и даты-времени проиллюстрирует таблица ниже:
Тип1 | Операция | Тип2 | Результат |
Дата-Время | + | Интервал | Дата-Время |
Дата-Время | - | Интервал | Дата-Время |
Интервал | + | Дата-Время | Дата-Время |
Дата-Время | + | Дата-Время | Интервал |
Интервал | + | Интервал | Интервал |
Интервал | - | Интервал | Интервал |
Интервал | * | Число | Интервал |
Число | * | Число | Интервал |
Интервал | / | Число | Интервал |
В принципе, я пока эту таблицу не проверял, так что – сами экспериментируйте с языком, смотрите, что у вас получится.
Предотвращение проблемы усечения с помощью подтипов даты-времени:
Точность по умолчанию для некоторых типов даты-времени меньше максимально возможной точности. Например, точность по умолчанию для значений DAY TO SECOND равны DAY(2) TO SECOND(6), в то время как максимальные значения точности равны DAY(9) TO SECOND(9). Поэтому при присваивании значений переменных этих типов или передаче значений параметров в подпрограммы их значения могут быть усечены, чтобы избежать этой проблемы, можно объявить параметры и переменные подпрограммы с помощью приведенных ниже подтипов, использующих максимальное значение для точности:
- TIMESTAMP_ UNCONSTRAINED
- TIMESTAMP_TZ_ UNCONSTRAINED
- TIMESTAMP_LTZ_ UNCONSTRAINED
- YMINTERVAL_ UNCONSTRAINED
- DSINTERVAL_ UNCONSTRAINED
Вот так надо решать возникающие проблемы. Кстати, если например мне нужна будет карта Турции – то я зайду на этот ресурс и посмотрю карту, со всем необходимым усердием. А если мне понадобиться уйти от проблем с усечением даты-времени в языке PL/SQL – воспользуюсь подтипов TIMESTAMP_TZ_UNCONSTRAINED.
В ближайшее время я планирую опубликовать еще пару статей о типах данных – и, наконец-то, перейду к описанию управляющих конструкций (циклы, ветвления и тд). Быстрее бы уже, а то надоели типы. В общем – до встречи, сегодня публиковать уже ничего не буду.
Комментариев нет:
Отправить комментарий