文档首页> 数据仓库服务 GaussDB(DWS)> 用户指南(阿布扎比区域)> 常见问题> 数据库使用> 如何处理建表时date类型字段自动转换为timestamp类型的问题?
更新时间:2023-03-08 GMT+08:00

如何处理建表时date类型字段自动转换为timestamp类型的问题?

创建数据库时,可通过DBCOMPATIBILITY参数指定兼容的数据库的类型,DBCOMPATIBILITY取值范围:ORA、TD、MySQL。分别表示兼容Oracle、Teradata和MySQL数据库。如果创建数据库时不指定该参数,则默认为ORA,在ORA兼容模式下,date类型会自动转换为timestamp(0)。

只有在MySQL兼容模式下才支持date类型,为解决以上问题,需要将兼容模式修改为MySQL,兼容模式仅支持在创建数据库时设置。GaussDB(DWS)从8.1.1集群版本开始支持MySQL兼容模式类型, 可参考如下示例进行操作:

1
2
3
4
5
6
7
8
9
gaussdb=> CREATE DATABASE mydatabase DBCOMPATIBILITY='mysql';
CREATE DATABASE
gaussdb=> \c mydatabase
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "mydatabase" as user "dbadmin".
mydatabase=> create table t1(c1 int, c2 date);
NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using round-robin as the distribution mode by default.
HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
CREATE TABLE