¿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) |