Consulta sql

27/05/2005 - 18:14 por Trauckos | Informe spam
Hola Foreros

Dentro una tabla en sqlserver tengo un campo fecha que es varchar(10),
cuando hago una busqueda no aparecen todos los registros.
EJ: SELECT cuno, cobrador FROM Gestiona WHERE fllamado >= '" & 18-04-2005
& "' " AND fllamado <= '" & 24-04-2005 & "' "
saca todos los registros
Pero cuando consulto esto
SELECT cuno, cobrador FROM Gestiona WHERE fllamado >= '" & 24-04-2005 &
"' " AND fllamado <= '" & 24-05-2005 & "' "
extrae solo los qe cominzan con 24


que puedo hacer?

Gracias
 

Leer las respuestas

#1 Manuel Vera
27/05/2005 - 18:42 | Informe spam
Nunca te dará los datos reales debido a que no es una fecha sino un campo de
texto.
Usando tu propio ejemplo, todas las "fechas" siguientes cumplen la
condicion:
todos los dias 19,20,21,22,23 (sin importar ni mes ni año)
todos dias 18 mayores a "mes" 04 y de cualquier año, pues 18-12-2010 en
texto es menor a 24-04-2005.
etc

La unica forma que una fecha pueda ser colocada como texto (varchar) y
permita hacer busquedas validas es colocarla en el formato:
aaaa-mm-dd, y los guiones son opcionales.

Tienes 3 opciones:

1.- Cambiar el campo a tipo fecha. Deberas crear una nueva columna "fecha_x"
y actualizas alli los valores que provienen de la original. Luego, borras la
original y renombras "fecha_x" con el nombre real. Debes modificar tu
aplicacion.
2.- Cambiar el formato como grabas al que te indique: aaaa-mm-dd. Debes
modificar tu aplicacion.
3.- La mas facil ahorita, pero la menos recomendable a largo plazo. Trampear
el sql:
where substring( fllamado , 7 , 4 ) + substring( fllamado , 3 , 4 ) +
substring( fllamado , 1 , 2 )
between '" & 2005-04-18 & "' AND '" & 2005-04-24 & "'"

Salu2
MV


"Trauckos" wrote in message
news:
Hola Foreros

Dentro una tabla en sqlserver tengo un campo fecha que es varchar(10),
cuando hago una busqueda no aparecen todos los registros.
EJ: SELECT cuno, cobrador FROM Gestiona WHERE fllamado >= '" &


18-04-2005
& "' " AND fllamado <= '" & 24-04-2005 & "' "
saca todos los registros
Pero cuando consulto esto
SELECT cuno, cobrador FROM Gestiona WHERE fllamado >= '" & 24-04-2005 &
"' " AND fllamado <= '" & 24-05-2005 & "' "
extrae solo los qe cominzan con 24


que puedo hacer?

Gracias


Preguntas similares