O que devo fazer se o tipo de data for convertido automaticamente para o tipo de carimbo de data/hora durante a criação da tabela?
Ao criar um banco de dados, você pode definir o parâmetro DBCOMPATIBILITY para o tipo de banco de dados compatível. O valor de DBCOMPATIBILITY pode ser ORA, TD e MySQL, indicando os bancos de dados Oracle, Teradata e MySQL, respectivamente. Se este parâmetro não for especificado durante a criação do banco de dados, o valor padrão ORA será usado. No modo de compatibilidade ORA, o tipo de data é automaticamente convertido em carimbo de data/hora(0). O tipo de data só é suportado no modo de compatibilidade do MySQL.
Para resolver o problema, você precisa alterar o modo de compatibilidade para o MySQL. O modo de compatibilidade de um banco de dados existente não pode ser alterado. Ele só pode ser especificado durante a criação do banco de dados. O GaussDB(DWS) suporta o modo de compatibilidade do MySQL no cluster versão 8.1.1 e posterior. Para configurar esse modo, execute os seguintes comandos:
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 |
Se o problema não puder ser resolvido alterando a compatibilidade, você pode tentar alterar o tipo de coluna. Por exemplo, insira dados do tipo data como cadeias em uma tabela. Exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
gaussdb=> CREATE TABLE mytable (a date,b int); CREATE TABLE gaussdb=> INSERT INTO mytable VALUES(date '12-08-2023',01); INSERT 0 1 gaussdb=> SELECT * FROM mytable; a | b ---------------------+--- 2023-12-08 00:00:00 | 1 (1 row) gaussdb=> ALTER TABLE mytable MODIFY a VARCHAR(20); ALTER TABLE gaussdb=> INSERT INTO mytable VALUES('2023-12-10',02); INSERT 0 1 gaussdb=> SELECT * FROM mytable; a | b ---------------------+--- 2023-12-08 00:00:00 | 1 2023-12-10 | 2 (2 rows) |