интервальная функция в оракуле - PullRequest
8 голосов
/ 04 мая 2011

Запрос:

SELECT INTERVAL '300' month,
       INTERVAL '54-2' year to month,
       INTERVAL ' 11:12:10.1234567' hour to second 
  FROM DUAL;

Вывод вышеуказанного запроса:

+25-00,+54-02,+00 11:12:10.1234567

Может кто-нибудь объяснить мне, как этот запрос дает этот вывод, с объяснением функции интервала?

Ответы [ 2 ]

11 голосов
/ 04 мая 2011

INTERVAL - это не функция, это ключевое слово, которое вводит интервал литерал и обозначает тип данных . Аналогично тому, что делают литералы DATE '2011-05-04' или TIMESTAMP '2011-05-04 17:18:19'.

Сведения об интервале литералы
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements003.htm#SQLRF00221
http://docs.oracle.com/cd/E11882_01/server.112/e41084/expressions009.htm#SQLRF52084

Сведения об интервале тип данных :
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i128552

8 голосов
/ 01 октября 2012

Интервал - это функция, которая используется для вычитания или добавления (дней, лет, месяцев, часов, минут и секунд) к указанной дате. интервал «300» месяц: 25-0 Причина: 300/12 (месяцы) дает вам частное как 25, а остаток как 0, так что результат будет 25-0

интервал '54 -2 'год к месяцу: 54-2 Причина: поскольку вы не упомянули ни одной даты, которую она дает, как есть. если вы используете выберите sysdate + интервал '54 -2 'год к месяцу из двойного; вывод будет: 1-12-2066

Сидат: 1-10-2012 так что добавление 54 к 12 = 66 и добавив 2 месяца к октябрю, который будет декабрь.

То же самое с последним вариантом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...