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

Error en el between de fecha

Estas en el tema de Error en el between de fecha en el foro de SQL Server en Foros del Web. Buenas, Tengo una query en la que una clausula del where es un between de fechas donde quiero sacar un dato del último día de ...
  #1 (permalink)  
Antiguo 19/12/2012, 10:37
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Error en el between de fecha

Buenas,

Tengo una query en la que una clausula del where es un between de fechas donde quiero sacar un dato del último día de este año y me salen datos del uno de enero del año que viene a las 00:00:00. Lo más curioso es que si pongo los segundos del 23:59 con un valor de 30 o más aparecen y si pongo de 29 o menos no aparecen. Esto es:

Código SQL:
Ver original
  1. SELECT * FROM TABLA
  2. WHERE Fecha BETWEEN '2012-12-31 00:00:00' AND '2012-12-31 23:59:30'

Saca todas las del día 31 y las del día uno a las 00:00:00. En cambio

Código SQL:
Ver original
  1. SELECT * FROM TABLA
  2. WHERE Fecha BETWEEN '2012-12-31 00:00:00' AND '2012-12-31 23:59:29'

Solo saca las del día 31. ¿Alguien sabe por qué puede ser?
  #2 (permalink)  
Antiguo 19/12/2012, 11:34
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Error en el between de fecha

Y si intentas con algo así?

SELECT * FROM TABLA
WHERE day(Fecha) = '31' and month(Fecha) = '12' and year(Fecha) = '2012'
  #3 (permalink)  
Antiguo 19/12/2012, 11:48
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error en el between de fecha

Código SQL:
Ver original
  1. SELECT * FROM TABLA
  2. WHERE Fecha >= '2012-12-31 00:00:00' AND Fecha <= '2012-12-31 23:59:29'
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 19/12/2012, 12:03
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Error en el between de fecha

Veo que no me expliqué bien. Ya tengo arreglado mi problema, la cuestión es que quiero saber por qué el between de 2012-12-31 23:59:30 (y más segundos) incluye los registros con fecha 2013-01-01 00:00:00 cuando debería descartarlos
  #5 (permalink)  
Antiguo 19/12/2012, 12:09
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Error en el between de fecha

Pues creo yo que es simplemente porque asi funciona el between cuando lo usas con segundos, pero la verdad no se a que se deba eso, tal vez los demas tengan una respuesta, saludos ;)
  #6 (permalink)  
Antiguo 19/12/2012, 15:36
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Error en el between de fecha

Si, que en lugar de BETWEEN (en fechas), siempre uses >= y <= (listo)
__________________
MCTS Isaias Islas

Etiquetas: fecha, select, tabla
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 05:54.