Db2 创建数据类型为Date的列的表格创建数据类型为Timestamp的列

Db2 创建数据类型为Date的列的表格创建数据类型为Timestamp的列,db2,db2-express-c,Db2,Db2 Express C,以下SQL查询: CREATE TABLE "SomeTable" ("dateEnd" DATE) 创建具有列dateEnd的表SomeTable。但是,数据库类型是时间戳,而不是日期。它以前可以工作,但在重新导入整个数据库转储后,所有日期数据类型都将替换为时间戳数据类型。即使我创建了一个非常简单的表,比如上面的表,数据类型也会跳到Timestamp。我使用的是DB2Express c 11.1.0版。如果您的DB2数据库是在Oracle兼容模式下创建的,那么DATE列将实现为TIMEST

以下SQL查询:

CREATE TABLE "SomeTable" ("dateEnd" DATE) 

创建具有列dateEnd的表SomeTable。但是,数据库类型是时间戳,而不是日期。它以前可以工作,但在重新导入整个数据库转储后,所有日期数据类型都将替换为时间戳数据类型。即使我创建了一个非常简单的表,比如上面的表,数据类型也会跳到Timestamp。我使用的是DB2Express c 11.1.0版。

如果您的DB2数据库是在Oracle兼容模式下创建的,那么
DATE
列将实现为
TIMESTAMP(0)
列,以匹配Oracle的功能

顺便说一句,您可能希望使用DB2Developer-C或DB2Developer社区版。这些都有效地取代了旧的Express-C版本


嘿,弗农,谢谢你的回答。我如何知道Db2数据库是否是在Oracle兼容模式下创建的?如果其他人读取转储,它会工作,但不会在我的计算机上完全相同的转储。我根据您提供的链接读取的注册表值DB2_COMPATIBILITY_VECTOR不能更改…您可以更改DB2_COMPATIBILITY_VECTOR,但不能更改数据在磁盘上的存储方式。例如,不能在现有数据库上更改
date\u compat
number\u compat
varchar2\u compat
配置参数,因此不能更改在现有数据库上处理例如
date
的方式。您必须创建一个新的数据库(DB2_兼容性_向量未设置)并删除旧数据库。嗯,我知道,我确实更改了DB2_兼容性_向量,但这并没有像您所说的那样奏效。在我的.dmp文件中,没有这样的属性DB2_COMPATIBILITY_VECTOR,这使得它非常奇怪。您认为它处于兼容模式是正确的。我正在导入并再次创建数据库(需要很长时间),但是我没有更改.dmp文件中的任何内容。。。还有什么其他原因导致数据库跳转到可组合模式吗?我不确定你所说的.dmp文件到底是什么意思。这些文件是“转储文件是二进制格式的,面向IBM软件支持代表。”