Imprimir página | Cerrar ventana

Where con Between no retorna fecha

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y Otros sistemas
Descripción del foro: Proyectos ADP & Sql Server, Mysql& Access, MSDE
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85803
Fecha de impresión: 26/Marzo/2026 a las 15:29


Tema: Where con Between no retorna fecha
Publicado por: Dany Solis
Asunto: Where con Between no retorna fecha
Fecha de publicación: 08/Febrero/2021 a las 04:50
Tengo un campo fecha DateTime en mi tabla MySql y estoy empleando la siguiente consulta para obtener los valores entre dos fechas, pero por ejemplo si ingreso 01/18/2021 fecha inicial y 01/29/2021 fecha final me devuelve todos los registros desde 01/18/2021 hasta 01/28/2021, me esta dejando fuera la fecha del 01/29.

Otra cosa estoy haciendo uso correcto dedel Having? ya que quiero hacer la suma de Duration y ProducedParts siempre y cuando el campo State sea igual a 10 y 11 dentro de las fechas dadas.

Esta es la consulta:

SELECT  ld.No ,

ld.LSet,

SUM(ld.Duration) as TotalDuration ,

SUM(ld.ProducedParts) as TotalPcs,

ld.State,

 DATE_FORMAT (ld.InsertTime ,  '%d-%m-%Y') as DateIni,

b.WireA ,

b.WireLengthA  ,

b.WireB ,

b.WireLengthB  ,

b.Terminal1,

b.Seal1,

b.Terminal2,

b.Seal2,

b.Terminal3,

b.Seal3,

b.Terminal4,

b.Seal4

FROM ldata ld

INNER JOIN bomv b

ON ld.Lset = b.Lset

WHERE

ld.InsertTime between STR_TO_DATE('@{1}', '%c/%e/%Y %H:%i:%s')--Aqui el Where con Between

AND

STR_TO_DATE('@{2}', '%c/%e/%Y %H:%i:%s')

GROUP BY

ld.No ,

ld.Lset,

ld.State,

b.WireA ,

b.WireLengthA  ,

b.WireB ,

b.WireLengthB  ,

b.Terminal1,

b.Seal1,

b.Terminal2,

b.Seal2,

b.Terminal3,

b.Seal3,

b.Terminal4,

b.Seal4

HAVING ld.State = 10

OR

ld.State = 11

ORDER BY ld.InsertTime, ld.No

Espero puedan ayudarme en identificar que es lo que estoy haciendo mal en la consulta.

Saludos

DS


-------------
Donde hay educación, no hay distinction de clases. (Confusio)

Dany Solis



Respuestas:
Publicado por: raipon
Fecha de publicación: 08/Febrero/2021 a las 13:54
Hace mucho tiempo que no tengo ocasión de trabajar con MySql, así que te respondo en base al comportamiento de Microsoft Access, y de ahí podrás extrapolar conclusiones.

Access almacena las fechas como un número single, donde la parte entera corresponde a los dias transcurridos desde el 30 de diciembre de 1899 (es el dia cero) y la parte decimal la fracción de tiempo. 

Si este filtro Where MyDate Between #12-30-1899# And #12-31-1899# lo expresamos de forma numérica, queda claro por qué no devuleve datos que correspondan a la última fecha:

Where CSng(MyDate) Between 0 And 1

... solo te devolverá datos del dia 31 de diciembre de 1899 si la fracción de tiempo es cero.


-------------
Ramon desde Terrassa.

http://www.sqlraipon.blogspot.com/" rel="nofollow - Mi blog


Publicado por: Dany Solis
Fecha de publicación: 09/Febrero/2021 a las 03:03
Gracias Raipon,

He leido un poco y ya me ha quedado aun mas claro su comentario.

Muchas gracias, se puede cerrar el hilo.

DS


-------------
Donde hay educación, no hay distinction de clases. (Confusio)

Dany Solis



Imprimir página | Cerrar ventana