Varchar2 数据类型允许系统时间戳
Varchar2 datatype allows systimestamp
我有一个 table 具有如下所示的 varchar2 数据类型
create table t11 (aa varchar2(100),bb varchar2(100));
现在,如果我尝试将 systimestamp
插入上面,则会插入值:
insert into t11 values (systimestamp,systimestamp);
commit;
问题是为什么在 Oracle 中允许这种转换。
我正在使用 Oracle 11g。
您的列类型是 varchar2
,systimestamp
的 return 类型是 timestamp
。 timestamp
不能直接存储到 varchar2
列中,Oracle 将 timestamp
值隐式转换为 varchar2
并使用 init 参数中指定的规则 NLS_TIMESTAMP_FORMAT
.
您可以阅读 Data Conversion Rules and NLS_TIMESTAMP_FORMAT 了解更多详情。
Oracle 具有依赖于 NLS_DATE_FORMAT
的隐式数据转换 Read more about here
Implicit conversion depends on the context in which it occurs and may
not work the same way in every case. For example, implicit conversion
from a datetime value to a VARCHAR2 value may return an unexpected
year depending on the value of the NLS_DATE_FORMAT parameter
我有一个 table 具有如下所示的 varchar2 数据类型
create table t11 (aa varchar2(100),bb varchar2(100));
现在,如果我尝试将 systimestamp
插入上面,则会插入值:
insert into t11 values (systimestamp,systimestamp);
commit;
问题是为什么在 Oracle 中允许这种转换。
我正在使用 Oracle 11g。
您的列类型是 varchar2
,systimestamp
的 return 类型是 timestamp
。 timestamp
不能直接存储到 varchar2
列中,Oracle 将 timestamp
值隐式转换为 varchar2
并使用 init 参数中指定的规则 NLS_TIMESTAMP_FORMAT
.
您可以阅读 Data Conversion Rules and NLS_TIMESTAMP_FORMAT 了解更多详情。
Oracle 具有依赖于 NLS_DATE_FORMAT
Implicit conversion depends on the context in which it occurs and may not work the same way in every case. For example, implicit conversion from a datetime value to a VARCHAR2 value may return an unexpected year depending on the value of the NLS_DATE_FORMAT parameter