SQL Server - Select con Between no funciona correctamente

 
Vista:
sin imagen de perfil

Select con Between no funciona correctamente

Publicado por Iñigo (3 intervenciones) el 09/01/2018 12:27:26
Hola foreros, tengo un problema el cual no se como solucionar.
Tengo una tabla con diferentes fechas pero al hacer la consulta me mezcla los valores.
Teniendo el siguiente codigo: SELECT distinct Fecha from contador Where Fecha between '01/01/2018' and '02/01/2018'
Pues al ejecutar la sentencia me devuelve los siguientes datos:
01/01/2018
01/11/2017
01/12/2017
02/01/2018

¿como puedo hacer para que me devuelva los valores solo del año marcado en la sentencia?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 86
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Select con Between no funciona correctamente

Publicado por Rafael (110 intervenciones) el 09/01/2018 14:05:59
Hola

Me pregunto: ¿El campo fecha de que tipo es?
Y me respondo: 100% Seguro es un varchar...

No es que te mezcle es que a modo caracter es correcto ...

Opcion A
Pon el tipo correcto de dato es decir convierte el campo en fecha en la tabla, para que puedas hacer comparativas de fecha, y se ordene, filtre, etc en formato fecha...

Opcion B
Si por algun detallo no se puede corregir la tabla usa el WHERE convirtiendo el campo a FECHA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Select con Between no funciona correctamente

Publicado por Isaias (4558 intervenciones) el 09/01/2018 17:10:29
En la opcion B, SQL Server dejaria de utilizar los indices (solo como una observacion)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Select con Between no funciona correctamente

Publicado por Iñigo (3 intervenciones) el 09/01/2018 20:44:26
Si, el campo fecha está como nvarchar(50) pero al cambiarlo a datetime me arroja el siguiente error
Arithmetic overflow error converting expression to data type datetime
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 42
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Select con Between no funciona correctamente

Publicado por Cesar (17 intervenciones) el 09/01/2018 20:56:30
Hola.

Eso quiere decir que un registro tiene una fecha no valida.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Select con Between no funciona correctamente

Publicado por Iñigo (3 intervenciones) el 09/01/2018 21:27:13
y como puedo buscar ese dato para eliminarlo? piensa que es una base de datos con millones de entradas en la tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Select con Between no funciona correctamente

Publicado por Isaias (4558 intervenciones) el 10/01/2018 05:04:45
1
SELECT tucampofecha FROM tutabla WHERE isdate(tucampofecha) = 0

Eso te dara todos aquellos registros cuyos datos en el campo "tucampofecha", NO soy de tipo FECHA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 86
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Select con Between no funciona correctamente

Publicado por Rafael (110 intervenciones) el 10/01/2018 10:06:47
Pues comprobando si el dato es fecha...

Puedes poner algo como esto:
1
2
3
SELECT *
from   contador
Where  isdate(Fecha) = 0

Esto te deberia devolver todos los registros en la tabla donde la fecha NO es fecha...

Jo me ha ganado ISAIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Select con Between no funciona correctamente

Publicado por Isaias (4558 intervenciones) el 10/01/2018 22:44:28
Dont worry......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Select con Between no funciona correctamente

Publicado por Isaias (4558 intervenciones) el 09/01/2018 17:14:25
Si el campo fuera de tipo DATE, entonces utilice >= y <=
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar