PDA

Ver la Versión Completa : Campo DATA


WaRRanT
12-03-2004, 19:43:47
Ola pessoal,

Boa tarde,

Gostaria de esclarecer uma dúvida.

Eu converti uma tabela do PARADOX para o MySQL, so que ha um problema num campo tipo DATE. Na nova tabla (MySQL) o campo "DATE" esta com valores irreais como por exemplo:

"2028-04-20"
"2023-04-20"
"2025-04-20"

Etc...

Por que está ocorrendo isto?

Gracias,

Abraços para todos,

WaRRanT

roman
12-03-2004, 20:00:34
El problema puede tener su origen en el hecho de que MySql y Paradox manejan distintos formatos de fecha. En MySql el formato es yyyy-mm-dd mientras que en Paradox es mm/dd/yyyy de manera que de alguna forma tendrás que ocuparte de la conversión.

// Saludos

WaRRanT
12-03-2004, 20:09:34
E como eu poderia resolver isso?

roman
12-03-2004, 20:25:55
¿Cómo estás exportando las tablas?

Lo que algunas veces he hecho es generar una tabla en paradox para hacer un "casting" y convertir el campo al formato adecuado. Tendrías que usar la función CAST para pasar de DATE a CHAR:

CAST(fecha as CHAR(10))

La función SUBSTRING para separar los elementos de la fecha:

SUBSTRING(campo from 1 for 2) - month
SUBSTRING(campo from 4 for 2) - day
SUBSTRING(campo from 7 for 4) - year

y volver a juntarlos con el formato adecuado:

year + '-' + month + '-' + day

// Saludos

WaRRanT
12-03-2004, 20:38:48
Roman,

Eu estou convertendo pelo DATAPUMP.

Instalei o MyODBC e criei um alias definindo pra onde as tablas serão convertidas e o tipo.

roman
12-03-2004, 21:24:28
Acabo de instalar myodbc pero aclaro que no tengo mucha idea de esto.

Traté de usar datapump y no sólo no obtuve fechas correctas sino que ¡no obtuve fecha alguna!

Sin embargo, hice una prueba rápida con Delphi:


{
TablaMysql - componente Table conectada al alias odbc
TablaParadox - componente Table conectada al alias paradox
}
while not TablaParadox.Eof do
begin
TablaMySql.Append;
TablaMySql['fecha'] := TablaParadox['fecha'];

{ otros campos }

TablaParadox.Next;
end;


y funcionó a la perfección.

Conclusión: no sé usar odbc con datapump o datapump no es bueno

Si te fijas, al menos en mi caso, cuando miras la tabla de conversión de campos en datapump ni siquiera te permite escoger el tipo date del lado de mysql.

// Saludos

WaRRanT
12-03-2004, 21:33:28
Roman,

O formato de data da minha tabla PARADOX não está MM-DD-YYYY, e sim DD-MM-YYYY

roman
12-03-2004, 21:44:21
Tienes razón, estaba confundido. El que indicas es también el formato que yo tengo. Aún así, como ves de mi anterior mensaje, pude hacer la exportación.

// Saludos

WaRRanT
12-03-2004, 21:46:31
Roman,

Que significa "fecha"?

roman
12-03-2004, 21:47:46
fecha = date

es sólo el nombre de un campo de tipo DATE

// Saludos

WaRRanT
12-03-2004, 21:54:35
Roman,

Ok...

Então deixe-me ver se entendi.

Eu pego a tabla PARADOX e mudo o tipo do campo de DATE para CHAR. E então eu implemento o codigo que você postou acima? Assim?

Gracias,

WaRRanT

roman
12-03-2004, 22:00:06
Eu pego a tabla PARADOX e mudo o tipo do campo de DATE para CHAR. E então eu implemento o codigo que você postou acima? Assim?


No.

Al salir el tema de odbc lo del CHAR pasó a la historia :)

Simplemente creas una tabla en mysql con la estructura similar a la tabla de paradox y luego usas el código adaptándolo a los campos que tenga tu tabla.

No hay necesidad de cambiar los tipos de datos- al menos en lo que a DATE se refiere, aunque no creo que otros tipos de datos te den problemas.

// Saludos

WaRRanT
13-03-2004, 15:13:22
Amigo Roman,

A funcion que voce me passou funcionou perfeitamente!! Gracias!! :)

Agora em consequencia da mudança do campo data está dando uma problema com uma sentença no Delphi. Vou postar em OFF aqui no foro de MySQL. Desculpe-me se isso es contra as regras do forum. :rolleyes:

"empresa:=BdGlobal.QyEmpresaCodigo.Value;
data:= Strtodate(DbEdit2.text);
If not QyDiario.Locate('Empresa;Data',VarArrayOf([empresa, data]),[loCaseInsensitive]) then
"

Quando é executado esta retornando o erro "INVALID VARIANT TYPE CONVERSION"

Ja tentei varias coisas e nao sei porque se passa este erro...


Gracias,

Abraços para todos!

WaRRanT