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

problema consultando entre fechas

Estas en el tema de problema consultando entre fechas en el foro de SQL Server en Foros del Web. Señores, mis mejores deseos porque esten bien. agradezco cualquier colaboracion en la solucion de la siguiente inquietud. en mi base de datos la fecha esta ...
  #1 (permalink)  
Antiguo 21/02/2006, 09:48
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
problema consultando entre fechas

Señores, mis mejores deseos porque esten bien. agradezco cualquier colaboracion en la solucion de la siguiente inquietud.

en mi base de datos la fecha esta almacenada a si: 2006-01-20 16:13:00
luego al hacer la consulta:
SELECT PDPV, FecCreacionPV
FROM PDMovimiento
WHERE FecCreacionPV BETWEEN '2006-01-20 00:00:00' AND '2006-01-31 00:00:00'
sale el mensaje: The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.

me pueden indicar como debe ir la instruccion?

mil gracias.
  #2 (permalink)  
Antiguo 21/02/2006, 10:51
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 18 años, 6 meses
Puntos: 3
Esto da cuando usas mal el formato de la fecha de acuerdo al collation ... es decir, el lenguaje usado.... con toda seguridad el formato de la fecha esta en formato español dd-mm-aaaa y no en aaaa-mm-dd..... prueba asi
WHERE FecCreacionPV BETWEEN '20-01-2006 00:00:00' AND '31-01-2006 23:59:59'

O bien usando el ANSI SQL
WHERE FecCreacionPV BETWEEN '20060120' AND '20060201'
  #3 (permalink)  
Antiguo 24/02/2006, 16:17
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Otra probable causa es que SMALLDATETIME solo tiene presición hasta el minuto, no al segundo. Prueba:

WHERE FecCreacionPV BETWEEN '20-01-2006 00:00' AND '31-01-2006 23:59'
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #4 (permalink)  
Antiguo 06/11/2006, 10:33
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 19 años, 6 meses
Puntos: 0
Hola. Estoy con el mismo problema, el mismo mensaje de error... probé con dos formas del query:

Código:
SELECT (...) CONVERT(DATETIME,PAYMENTS_RECEIVED.PYR_DATE,103), (...)
FROM RESERVES LEFT OUTER JOIN (...)
WHERE (PAYMENTS_RECEIVED.PYR_DATE BETWEEN '20/03/2006' AND '21/03/2006')
y ésta otra:

Código:
SELECT (...) PAYMENTS_RECEIVED.PYR_DATE, (...)
FROM RESERVES LEFT OUTER JOIN (...)
WHERE (PAYMENTS_RECEIVED.PYR_DATE >= CONVERT(DATETIME,'20/03/2006',103)) AND (PAYMENTS_RECEIVED.PYR_DATE < CONVERT(DATETIME,'21/03/2006',103))
También probé las mismas queries agregando " 00:00:00 a.m." a las fechas a convertir en el segundo caso. Entiendo que "103" es el código correspondiente a "dd/mm/yyyy".

En ambos casos se da lo de arriba. Lo más extraño es que, al usar el query builder usando el control sqlsource Visual Studio Web Developer Express 2005 la query siguiente

Código:
SELECT      (...) PAYMENTS_RECEIVED.PYR_DATE,  (...)
FROM          RESERVES LEFT OUTER JOIN (...)
WHERE      (PAYMENTS_RECEIVED.PYR_DATE >= CONVERT(DATETIME, '20/03/2006', 103)) AND (PAYMENTS_RECEIVED.PYR_DATE < CONVERT(DATETIME, ' 21 / 03 / 2006 ', 103))
funciona a la perfección. El server y la db son obviamente las mismas. ¿Pueden darme una idea de qué pasa?

Gracias desde ya!!!!
  #5 (permalink)  
Antiguo 06/11/2006, 11:46
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
Intenta:

WHERE (FecCreacionPV >= '2006-01-20 00:00') AND (FecCreacionPV <= '2006-01-31 00:00')

ESPERO LES SIRVA!!!
  #6 (permalink)  
Antiguo 06/11/2006, 12:18
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 19 años, 6 meses
Puntos: 0
sigue sin funcionar lamentablemente...
  #7 (permalink)  
Antiguo 06/11/2006, 13:00
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
Pregunta

como tienes la fecha en tu campo?...prueba con el 12 en vez del 13...quizá funione!!!
  #8 (permalink)  
Antiguo 06/11/2006, 13:05
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
que formato tiene la fecha (dd/mm/aaaa 00:00:00 ??) en tu campo...prueba con el 102 en vez del 103!!!...sorry por la confusión!!!...
  #9 (permalink)  
Antiguo 06/11/2006, 13:24
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 19 años, 6 meses
Puntos: 0
mmmm lo mismo... si hago el query en visual studio el campo sale con "04/11/2004 12:00:00 a.m." por ejemplo. según VS es un "datetime" con length = 8

ahora, por qué el cambio de 102 a 103? no tengo que poner el número como lo va a ingresar el usuario (luego de chequear que efectivamente sea una fecha)?


mil gracias!!!
  #10 (permalink)  
Antiguo 06/11/2006, 13:33
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 17 años, 7 meses
Puntos: 0
si...pero es importante saber como está el dato de fecha en tu BD, ya que de ello depende como vas a generar tu query, segun el formato de tu fecha, es el formato que debes emplear en el query, por ello te preguntaba como está el formato de tu fecha en tu BD!!!
  #11 (permalink)  
Antiguo 09/11/2006, 09:31
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 19 años, 6 meses
Puntos: 0
Bueno, el dato está como dije... en el formato datetime de sql server 2000.


gracias!!
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 15:04.