Que tal compañeros, solo para confirmar esto que estoy haciendo este bien, o
si hay alguna otra forma mas sencilla, puesadelante, gracias.
Tengo una tabla llamada Reporte, la cual contiene dos campos
reporte int
fecha DateTime
contiene datos como estos:
Reporte Fecha
154379 2003-08-28 01:01:01.000
154378 2003-08-26 23:46:05.000
154377 2003-08-26 23:33:17.000
154376 2003-08-25 23:24:08.000
154375 2003-08-23 22:59:56.000
154374 2003-08-22 22:54:20.000
154373 2003-08-22 22:50:21.000
154372 2003-08-19 22:32:19.000
154371 2003-08-18 21:52:22.000
154370 2003-08-17 21:46:43.000
154369 2003-08-16 21:39:44.000
154368 2003-08-15 21:38:00.000
154367 2003-08-15 21:19:21.000
154366 2003-08-14 21:02:00.000
154365 2003-08-13 20:56:59.000
154364 2003-08-12 19:54:55.000
154363 2003-08-12 19:51:54.000
154362 2003-08-12 19:43:40.000
154361 2003-08-11 19:39:32.000
154360 2003-08-11 19:34:23.000
154361 2003-07-16 19:39:32.000
154360 2003-07-16 19:34:23.000
si ejecuto esta sentencia:
select * from reporte
where fecha between '15/08/2003' and '17/08/2003'
me devuelve solo el registro 154369 2003-08-16 21:39:44.000 , yo
entiendo que es por la horas que tienen las fechas, por lo cual convierto a
la fecha un varchar e intento de nuevo...
select * from reporte
where convert(varchar(10), fecha, 103) between '15/08/2003' and
'17/08/2003'
y me devuelve reportes con fechas que no tienen nada que ver, esto a lo
mejor tambien lo entiend, ya que lo esta analizando como un varchar(10), por
lo cual lo moldeo a DateTime de nuevo y funciona muy bien, claro esta porque
ya no tiene las hora y asi, si funciona el between con las fechas, esta es
la sentencia.
select * from reporte
where cast(convert(varchar(10), fecha, 103) as DateTime) between
'15/08/2003' and '17/08/2003'
y ahora si obtengo los resultados deseados.
154370 2003-08-17 21:46:43.000
154369 2003-08-16 21:39:44.000
154368 2003-08-15 21:38:00.000
154367 2003-08-15 21:19:21.000
Ahora bien, la pregunta es la siguiente, ¿hay forma de evitar esto?, evitar
convertir a varchar para después moldear a DateTime.
Espero comentarios, gracias de nuevo por leerlo el mensaje y saludos.
Vicente López.
Leer las respuestas