Неявное преобразование типа данных `ДАТА` в `ЧИСЛО`

#sql #oracle11g

#sql #oracle11g

Вопрос:

Запрос, который выдает ошибку, является

  SELECT hire_date sysdate from Employees;
  

Почему oracle не выполняет неявное преобразование DATE в NUMBER во время, hire_date sysdate как это происходит во время hire_date-sysdate . Это потому, что hire_date sysdate это не имеет смысла? или что-нибудь еще.

Редактировать:-

Теперь я получил ответ, спасибо всем.

Комментарии:

1. каков желаемый результат?

2. Что для вас значит добавить две даты? Обычно это не имеет смысла. Что вообще означает 1 марта 2012 17 апреля 1842?

3. При вычитании одной даты из другой не происходит неявного «преобразования типа данных», как, например,: hire_date - sysdate . Это просто вычисляет количество дней между двумя датами. Дата ни во что не преобразуется. Но добавление двух дат не имеет смысла (как уже прокомментировал Джастин) — так же, как не имеет смысла умножение двух дат. Для деления одного на другое.

4. @a_horse_with_no_name Но, как мы знаем, operator - принимает в качестве параметров только Numeric тип данных, а правилом неявного преобразования данных oracle является «Когда вы используете функцию SQL или оператор с аргументом типа данных, отличным от того, который он принимает, Oracle преобразует аргумент в принятый тип данных» . Тогда почему date не преобразовано в number во время -

5.Нет. Оператор - определен для дат и временных меток. И определяется для комбинации дат / временных меток и интервалов. И при использовании с ними Oracle не преобразует значения в числа. Подробности смотрите в руководстве:docs.oracle.com/database/121/SQLRF/sql_elements001.htm#g196492

Ответ №1:

На самом деле идентификатор не имеет смысла.

Но запрос является :

 add_months(hire_date,extract(year from sysdate)*12  extract(month from sysdate))  extract(day from sysdate)