Varchar2数据类型允许systimestamp

时间:2015-09-30 05:39:55

标签: oracle oracle11g varchar2 systimestamp

我有一个包含varchar2数据类型的表,如下所示

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

现在,如果我尝试在上面插入systimestamp,则会插入值:

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

问题是为什么在Oracle中允许这种转换。

我正在使用Oracle 11g。

2 个答案:

答案 0 :(得分:6)

您的列类型为varchar2,返回类型systimestamptimestamptimestamp无法直接存储到varchar2列,Oracle会使用init参数timestamp中指定的规则将varchar2值隐式转换为NLS_TIMESTAMP_FORMAT。< / p>

您可以阅读Data Conversion RulesNLS_TIMESTAMP_FORMAT了解更多详情。

答案 1 :(得分:5)

Oracle具有依赖于attributedTitle

的隐式数据转换Read more about here
  

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