Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda/ GaussDB(DWS)/ Preguntas frecuentes/ Uso de la base de datos/ ¿Qué hago si el tipo de fecha se convierte automáticamente en el tipo de marca de tiempo durante la creación de la tabla?
Actualización más reciente 2023-10-12 GMT+08:00

¿Qué hago si el tipo de fecha se convierte automáticamente en el tipo de marca de tiempo durante la creación de la tabla?

Al crear una base de datos, puede establecer el parámetro DBCOMPATIBILITY en el tipo de base de datos compatible. El valor de DBCOMPATIBILITY puede ser ORA, TD y MySQL, indicando las bases de datos Oracle, Teradata y MySQL, respectivamente. Si este parámetro no se especifica durante la creación de la base de datos, se utiliza el valor predeterminado ORA. En el modo de compatibilidad ORA, el tipo de fecha se convierte automáticamente en marca de tiempo (0).

Para evitar esta conversión, establezca la base de datos en el modo de compatibilidad MySQL, que es el único modo que admite el tipo de fecha. No se puede cambiar el modo de compatibilidad de una base de datos existente. Solo se puede especificar durante la creación de la base de datos. GaussDB(DWS) soporta el modo de compatibilidad de MySQL en la versión 8.1.1 y posterior de clúster. Para configurar este modo, ejecute los siguientes 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

Si el problema no se puede resolver cambiando la compatibilidad, puede intentar cambiar el tipo de columna. Por ejemplo, inserte datos del tipo de fecha como cadena en una tabla. Por ejemplo:

 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)