【发布时间】:2017-07-19 08:18:36
【问题描述】:
如何使列数据类型为 DATE,如 YYYY-MM-DD;
当我创建一个数据类型为 DATE 的表时,它将变为TIMESTAMP(0)
我ALTER SET DATA TYPE DATE的时候还是TIMESTAMP(0)
和SELECT CHAR(CURRENT DATE, ISO) FROM SYSIBM.SYSDUMMY1;
SQLCODE=-171 将出错,当前日期为 2017-02-28 19:19:09.0
太长了。
数据库信息:DB2 linux x64 10.5
CREATE TABLE "XCRSUSR"."TIMP_TASK_SERIAL" (
"SERIAL_NO" DECIMAL(16 , 0),
"TASK_NAME" VARCHAR(10),
"TASK_TYPE" DOUBLE,
"TASK_XML" CLOB(10) INLINE LENGTH 164,
"SEND_TIME" DATE,
"FINISH_TIME" DATE,
"TASK_STATUS" DOUBLE DEFAULT 0,
"RUN_TYPE" DOUBLE,
"FLAG" DOUBLE,
"TASK_ID" VARCHAR(10)
)
ORGANIZE BY ROW
DATA CAPTURE NONE
IN "CREDIT_U_16" INDEX IN "CREDIT_INDEX_16"
COMPRESS NO;
ALTER TABLE TIMP_TASK_SERIAL ALTER COLUMN SEND_TIME SET DATA TYPE DATE;
select CURRENT DATE from SYSIBM.SYSDUMMY1;
1
---------------------
2017-02-28 19:19:09.0
【问题讨论】:
-
如果您的数据库处于 Oracle 兼容模式,
DATE数据类型实际上是TIMESTAMP以模仿 Oracle 的,它同时具有数据和时间组件。如果不需要 Oracle 兼容性,请禁用它;如果你这样做了,那么这是预期的行为。 -
是的,它真的很喜欢那样。所以,如何禁用 Oracle 兼容性,特别是 date_compat。只有 db2cmd?
-
我想搜索 date_compat 的设置。所以我可以测试和验证
标签: date db2 sqldatatypes db2-luw