Visual Basic Foro
Programación => Bases de Datos => Mensaje iniciado 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:
V01 = "'" & Format(DTPicker1.Value, "yyyy/MM/dd hh:mm:ss") & "'"
Ahora al querer hacer el filtro con:
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.
SELECT * FROM vehiculos_detalle WHERE fingreso BETWEEN '2013-06-10' AND '2013-06-11'
-
Proba:
SELECT * FROM vehiculos_detalle WHERE DATE(fingreso) = '2013-06-10'
-
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.
-
Prueba con
SELECT * FROM vehiculos_detalle WHERE fingreso BETWEEN '2013-06-10 00:00:00' AND '2013-06-11 23:59:59'
o
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
-
Gracias a todos por responder lo solucione asi:
SELECT * FROM vehiculos_detalle WHERE DATE(fingreso) BETWEEN '2013-06-10' AND '2013-06-10'
-
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.
-
Usando el diseñador de consultas de access para un entre fechas 04-12-2015 y 31-12-2015
SELECT Codigo, Fecha
FROM Movimiento_Pesaje
WHERE [Fecha] Between #12/4/2015# And #12/31/2015#
-
Tengo una tabla con un tipo de campo DateTime, desde vb lo guardo sin problemas asi:
V01 = "'" & Format(DTPicker1.Value, "yyyy/MM/dd hh:mm:ss") & "'"
Ahora al querer hacer el filtro con:
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.
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
-
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)