1

I have one table with varchar2 datatypes like below

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

Now, if I trying to insert systimestamp into above, values are getting inserted:

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

Question is why this conversion is allowed in Oracle.

I am using Oracle 11g.

4

2 回答 2

6

您的列类型是varchar2,返回类型systimestamptimestamptimestamp不能直接存储到列中,Oracle使用 init 参数中指定的规则将值varchar2隐式转换为.timestampvarchar2NLS_TIMESTAMP_FORMAT

您可以阅读数据转换规则NLS_TIMESTAMP_FORMAT了解更多详细信息。

于 2015-09-30T05:50:07.087 回答
5

Oracle 有隐式数据转换阅读更多关于这里取决于NLS_DATE_FORMAT

隐式转换取决于它发生的上下文,并且可能不会在每种情况下都以相同的方式工作。例如,从日期时间值到 VARCHAR2 值的隐式转换可能会返回意外年份,具体取决于 NLS_DATE_FORMAT 参数的值

于 2015-09-30T05:51:29.457 回答