Тип данных 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.

Другие вопросы по тегам