Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
Campo DATA

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
Responder Con Cita
  #2  
Antiguo 12-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 12-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
E como eu poderia resolver isso?
Responder Con Cita
  #4  
Antiguo 12-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿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
Responder Con Cita
  #5  
Antiguo 12-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
Roman,

Eu estou convertendo pelo DATAPUMP.

Instalei o MyODBC e criei um alias definindo pra onde as tablas serão convertidas e o tipo.
Responder Con Cita
  #6  
Antiguo 12-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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:

Código:
{
  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
Responder Con Cita
  #7  
Antiguo 12-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
Roman,

O formato de data da minha tabla PARADOX não está MM-DD-YYYY, e sim DD-MM-YYYY
Responder Con Cita
  #8  
Antiguo 12-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #9  
Antiguo 12-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
Roman,

Que significa "fecha"?
Responder Con Cita
  #10  
Antiguo 12-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
fecha = date

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

// Saludos
Responder Con Cita
  #11  
Antiguo 12-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
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
Responder Con Cita
  #12  
Antiguo 12-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por WaRRanT
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
Responder Con Cita
  #13  
Antiguo 13-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
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.

"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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:51:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi