Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Complicaciones con el uso de AND y un campo

Estas en el tema de Complicaciones con el uso de AND y un campo en el foro de SQL Server en Foros del Web. Hola amigos, un saludo, pues soy nuevo por aca, espero me puedan ayudar con un problemilla que surgio. Les contare un poco: Tengo una tabla ...
  #1 (permalink)  
Antiguo 06/03/2012, 17:22
 
Fecha de Ingreso: marzo-2012
Ubicación: Mexico
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 1
Complicaciones con el uso de AND y un campo

Hola amigos, un saludo, pues soy nuevo por aca, espero me puedan ayudar con un problemilla que surgio.

Les contare un poco:
Tengo una tabla con un campo llamado linkacct de tipo char, este campo recibe todo tipo de formatos (numeros, texto, fechas). Bueno entonces en mi consulta lo que me interesa es tomar los valores que son con un formato de fecha, este tipo de dato solo se da cuando otro campo llamado asunto tiene la palabra mantenimiento, osea que solo si asunto es mantenimiento el dato de linkacct es una fecha.

Bueno en una consulta quiero obtener los mantenimientos que aun estan activos. Algo sencillo a primera vista, pero ahi es en donde se presenta el problema:

Tengo algo como esto:

Select tabla1.producto,
tabla2.linkacct as 'Fecha'
From tabla1, tabla 2
Where tabla1.asunto='Mantenimiento' AND tabla1.codigo=tabla2.codigo

Con esto no tengo ningun problema. Pero necesito dos lineas mas y ahi es donde viene el problema, necesito una columna que de la diferencia entre la fecha actual y el dia en que vence el mantenimiento, y necesito agregar un AND con la condicion de que el mantenimiento sea mayor que la fecha actual.

Algo como esto:

Select tabla1.producto,
tabla2.linkacct as 'Fecha',
datediff(month,getdate(),tabla2.linkacct) as 'diferencia'
From tabla1, tabla 2
Where tabla1.asunto='Mantenimiento' AND tabla1.codigo=tabla2.codigo AND tabla2.linkacct >getdate()

Aqui me marca un error, en el datediff y en la condicion de fechas, esto puede ser obvio porque el campo es tipo "char", entonces lo que intente hacer es usar el CONVERT, pero no estoy muy seguro que lo haya utilizado bien, hize algo como esto:

Select tabla1.producto,
tabla2.linkacct as 'Fecha',
datediff(month,getdate(),convert(datetime,tabla2.l inkacct,AQUI USE VARIOS ESTILOS 20,21,120,121,126) as 'diferencia'
From tabla1, tabla 2
Where tabla1.asunto='Mantenimiento' AND tabla1.codigo=tabla2.codigo AND convert(datetime,tabla2.linkacct,VARIOS ESTILOS) >getdate()

Use varios estilos porque el formato de la fecha es aaaa-mm-dd
Entonces sigo teniendo el mismo resultado: Error.
Mi teoria es: que como el campo linkacct recibe diferentes formatos el sistema trata de hacer la conversion para todos los datos, no solo para los de formato de fecha.
Algo que se me ocurrio hacer es algo asi como una preseleccion, primero "filtrar" los valores por mantenimiento y despues hacer todos las operaciones que necesito, pero no se como hacer esto.

Espero a alguno de ustedes se les ocurra algo interesante y lo compartan conmigo.

Perdon por extenderme tanto, pero no fue mi culpa :)
Nota: como soy nuevo no se si este mensaje va en esta zona, si esta mal, espero que algun moderador lo mueva.
Saludos
  #2 (permalink)  
Antiguo 07/03/2012, 09:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Complicaciones con el uso de AND y un campo

asi es la base de datos trata de convertir toda la informacion aunque no sea formato fecha lo que te recomiendo es que metas nada mas los campos fecha en una tabla temporal y los transformes al formato que necesitas...

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 07/03/2012, 12:24
 
Fecha de Ingreso: marzo-2012
Ubicación: Mexico
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Complicaciones con el uso de AND y un campo

Cita:
Iniciado por Libras Ver Mensaje
asi es la base de datos trata de convertir toda la informacion aunque no sea formato fecha lo que te recomiendo es que metas nada mas los campos fecha en una tabla temporal y los transformes al formato que necesitas...

Saludos!
Esa es otra cuestion que no comente, no puedo crear tablas, ni modificarlas, es la base de datos de un programa llamado "Gold Mine" y no puedo modificarla, solo puedo hacer consultas simples, por asi llamarlas.

Saludos

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:45.