Visual Basic Foro

Programación => Bases de Datos => Mensaje iniciado por: E N T E R en Junio 18, 2013, 04:10:44 pm

Título: Filtrar por fecha si un campo tiene hora integrada [bd MySQL]
Publicado por: E N T E R en Junio 18, 2013, 04:10:44 pm
Tengo una tabla con un tipo de campo DateTime, desde vb lo guardo sin problemas asi:

Código: (VB) [Seleccionar]
V01 = "'" & Format(DTPicker1.Value, "yyyy/MM/dd hh:mm:ss") & "'"
Ahora al querer hacer el filtro con:

Código: (SQL) [Seleccionar]
SELECT * FROM vehiculos_detalle WHERE fingreso BETWEEN '2013-06-10' AND '2013-06-10'
No me trae si la fecha de inicio es igual al final ahora si pongo al final un día mas me trae.

o sea si hago asi si me trae los resultados.

Código: (SQL) [Seleccionar]
SELECT * FROM vehiculos_detalle WHERE fingreso BETWEEN '2013-06-10' AND '2013-06-11'
Título: Re:Filtrar por fecha si un campo tiene hora integrada [bd MySQL]
Publicado por: raul338 en Junio 18, 2013, 05:23:10 pm
Proba:

Código: (sql) [Seleccionar]
SELECT * FROM vehiculos_detalle WHERE DATE(fingreso) = '2013-06-10'
Título: Re:Filtrar por fecha si un campo tiene hora integrada [bd MySQL]
Publicado por: E N T E R en Junio 18, 2013, 05:35:44 pm
Si funciona ese Raul, pero lo que pasa es que no puedo filtrar así si desde una fecha hasta otra fecha por ejemplo si quiero filtrar desde 2013-06-10 hasta el 2013-06-18.
Esto solo pasa si el tipo de campo es DateTime, si solo pongo el campo Date me funciona bien el codigo que mencione ahi.

Lo hice así para evitar poner tantas columnas y tantos controles en el form de VB.
Título: Re:Filtrar por fecha si un campo tiene hora integrada [bd MySQL]
Publicado por: YAcosta en Junio 18, 2013, 05:52:59 pm
Prueba con

Código: (SQL) [Seleccionar]
SELECT * FROM vehiculos_detalle WHERE fingreso BETWEEN '2013-06-10 00:00:00' AND '2013-06-11 23:59:59'
o

Código: (SQL) [Seleccionar]
SELECT * FROM vehiculos_detalle WHERE Cast(fingreso as Date) BETWEEN '2013-06-10' AND '2013-06-11'
Nota: No estoy seguro como se usa Cast en MySQL o en todo caso debe haber una función similar, lo que hace es convertirte en la consulta SQL el campo DateTime a Date. Si tienes muchos registros podría impactar negativamente en la velocidad de la consulta ya que no haria caso si el campo fingreso estuviera indexado. Yo uso la primera forma sin problemas.

Saludos
Título: Re:Filtrar por fecha si un campo tiene hora integrada [bd MySQL]
Publicado por: E N T E R en Junio 18, 2013, 06:00:28 pm
Gracias a todos por responder lo solucione asi:

Código: (SQL) [Seleccionar]
SELECT * FROM vehiculos_detalle WHERE DATE(fingreso) BETWEEN '2013-06-10' AND '2013-06-10'
Título: Re:Filtrar por fecha si un campo tiene hora integrada [bd MySQL]
Publicado por: lucius en Febrero 12, 2016, 01:47:11 am
Hola, tengo el mismo problema pero estoy trabajando con access2003 o en todo caso podria trabajarlo con access2007 en caso tenga mas funciones.

La solucion final de enter no funca en access y la funcion CAST menos, que estresante resulto este imprevisto.
Título: Re:Filtrar por fecha si un campo tiene hora integrada [bd MySQL]
Publicado por: Virgil Tracy en Febrero 13, 2016, 04:17:34 am
Usando el diseñador de consultas de access para un entre fechas 04-12-2015 y 31-12-2015

Código: (SQL) [Seleccionar]
SELECT Codigo, Fecha
FROM Movimiento_Pesaje
WHERE [Fecha] Between #12/4/2015# And #12/31/2015#
Título: Re:Filtrar por fecha si un campo tiene hora integrada [bd MySQL]
Publicado por: jose.emanuel.vega en Febrero 17, 2016, 05:28:37 pm


Tengo una tabla con un tipo de campo DateTime, desde vb lo guardo sin problemas asi:

Código: (VB) [Seleccionar]
V01 = "'" & Format(DTPicker1.Value, "yyyy/MM/dd hh:mm:ss") & "'"
Ahora al querer hacer el filtro con:

Código: (SQL) [Seleccionar]
SELECT * FROM vehiculos_detalle WHERE fingreso BETWEEN '2013-06-10' AND '2013-06-10'
No me trae si la fecha de inicio es igual al final ahora si pongo al final un día mas me trae.

o sea si hago asi si me trae los resultados.

Código: (SQL) [Seleccionar]
SELECT * FROM vehiculos_detalle WHERE fingreso BETWEEN '2013-06-10' AND '2013-06-11'


De esta forma te aseguras que si es campo datetime o date siempre se filtre por la fecha

SELECT * FROM vehiculos_detalle WHERE Convert(varchar(8), fingreso, 112) BETWEEN '20130610' AND '20130611'

Si no es lo que buscabas avisame.

Saludos cordiales

Enviado desde mi XT1032 mediante Tapatalk

Título: Re:Filtrar por fecha si un campo tiene hora integrada [bd MySQL]
Publicado por: lucius en Febrero 22, 2016, 04:37:00 am
Hola, en este artículo se explica el pequeño problema con mas detalle sin embargo para MSAccess debe haber otra solucion

http://ltuttini.blogspot.pe/2010/09/adonet-filtrar-rango-de-fechas.html
 (http://ltuttini.blogspot.pe/2010/09/adonet-filtrar-rango-de-fechas.html)