2015-09-30 4 views
1

У меня есть одна таблица с varchar2 типов данных, как показано нижеVARCHAR2 тип данных позволяет systimestamp

create table t11 (aa varchar2(100),bb varchar2(100)); 

Теперь, если я пытаюсь вставить systimestamp в выше, значения будут вставлены:

insert into t11 values (systimestamp,systimestamp); 
commit; 

Вопрос почему это преобразование разрешено в Oracle.

Я использую Oracle 11g.

ответ

6

Тип вашей колонки - varchar2, а тип возврата systimestamp - timestamp. timestamp не может быть сохранен непосредственно в столбце varchar2, Oracle неявно преобразует значение timestamp в значение varchar2 с правилом, указанным в параметре init, NLS_TIMESTAMP_FORMAT.

Вы можете прочитать Data Conversion Rules и NLS_TIMESTAMP_FORMAT для более подробной информации.

5

Oracle есть неявное преобразование Read more about here данных, которая зависит от NLS_DATE_FORMAT

неявного преобразования зависит от контекста, в котором это происходит, и может не работать так же, как в каждом конкретном случае. Например, неявное преобразование от значения datetime до значения VARCHAR2 может возвращать неожиданный год в зависимости от значения параметра NLS_DATE_FORMAT

Смежные вопросы