Тип данных Varchar2 позволяет использовать метку systime
У меня есть одна таблица с типами данных varchar2, как показано ниже
create table t11 (aa varchar2(100),bb varchar2(100));
Теперь, если я пытаюсь вставить systimestamp
в выше значения вставляются:
insert into t11 values (systimestamp,systimestamp);
commit;
Вопрос в том, почему это преобразование разрешено в Oracle.
Я использую Oracle 11g.
2 ответа
Ваш тип столбца varchar2
и тип возврата systimestamp
является timestamp
, timestamp
не может быть сохранен непосредственно в varchar2
колонка Oracle неявно преобразует timestamp
значение в varchar2
с правилом, указанным в параметре init, NLS_TIMESTAMP_FORMAT
,
Вы можете прочитать Правила преобразования данных и NLS_TIMESTAMP_FORMAT для более подробной информации.
Oracle имеет неявное преобразование данных Подробнее о здесь, который зависит от NLS_DATE_FORMAT
Неявное преобразование зависит от контекста, в котором оно происходит, и может работать не во всех случаях одинаково. Например, неявное преобразование значения datetime в значение VARCHAR2 может вернуть неожиданный год в зависимости от значения параметра NLS_DATE_FORMAT.