Visual Basic.NET - Consulta SQL a Access entre fechas (tipo Date)

 
Vista:

Consulta SQL a Access entre fechas (tipo Date)

Publicado por David Orrillo (1 intervención) el 23/05/2022 06:08:36
Buenas, tengo una base de datos con un campo fecha de tipo Date (Short), tengo que realizar búsquedas entre rangos de fecha, al hacerlo me busca los rangos pero solo me tiene en cuenta los dias. Por ejemplo:
En la BD tengo varias fechas


23/12/2021

10/04/2022
19/04/2022

12/05/2022
13/05/2022
14/05/2022
17/05/2022
18/05/2022
19/05/2022
27/05/2022
30/05/2022

Cuando intento buscar entre un rango de fechas, por ejemplo, entre el 14/05/2022 y el 23/05/2022 me arroja un resultado teniendo en cuenta solo el día y no el mes ni el año, por lo que el resultado arrojado sería

23/12/2021 (No deberí aparecer)
19/04/2022 (No deberí aparecer)
14/05/2022
17/05/2022
18/05/2022
19/05/2022

Se que teniendo el campo tipo string y dándole formato yyyyMMdd se ordenan bien, pero necesito que el campo en la BD sea de tipo Date, por lo que a la cadena de búsqueda debo pasarle un Date.

Mi código es el siguiente:


1
2
3
4
finicio = Format(CDate(Fechadesde.Value), "dd/MM/yyyy")
ffin = Format(CDate(Fechahasta.Value), "dd/MM/yyyy")
sql = "SELECT * FROM " & estacion  & " WHERE F_INICIO BETWEEN (#" & finicio & "#) AND (#" & ffin & "#)""

Gracias de antemano y espero que me podais ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Consulta SQL a Access entre fechas (tipo Date)

Publicado por Phil Rob (1554 intervenciones) el 23/05/2022 09:51:29
Hola,

Te propongo de intentar este :

1
2
3
Dim finicio As String = Fechadesde.Value.ToString("yyyy/MM/dd")  ' supongo que Fechadesde es un DateTimePicker
        Dim ffin As String = Fechahasta.Value.ToString("yyyy/MM/dd")  ' supongo que Fechahasta es un DateTimePicker
        Sql = "SELECT * FROM " & estacion & " WHERE  FORMAT(F_INICIO, 'yyyy/MM/dd') BETWEEN '" & finicio & "' AND '" & ffin & "'"

Atención : Format fecha vuelto y apóstrofos cerca de nombres de las variables en la consulta.

Si Fechadesde y Fechahasta están textBox, reemplazas .Value.ToString por .Text

Espero que este te ayudará ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Consulta SQL a Access entre fechas (tipo Date)

Publicado por David (1 intervención) el 27/05/2022 22:16:53
Genial amigo, habia probado dar formato string "yyyy/MM/dd" en los DateTimePickes pero claro al cambiar el tipo de datos me fallaba la búsqueda, no habia caido en dar formato en la propia sentencia SQL para que coincidieran los tipos de datos.
Funciona perfectamente

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Consulta SQL a Access entre fechas (tipo Date)

Publicado por Phil Rob (1554 intervenciones) el 27/05/2022 22:42:26
Muy bien !
Buenas noches ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta SQL a Access entre fechas (tipo Date)

Publicado por DIEGO (1 intervención) el 11/07/2023 01:30:51
Luego de una semana buscando respuesta a esta duda, logré dar con esta solución. Estoy muy agradecido por esta publicación y he valorado la respuesta, Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Consulta SQL a Access entre fechas (tipo Date)

Publicado por Arturo Fdez-Pacheco (5 intervenciones) el 11/07/2023 11:36:32
buenos dias.

Yo lo hago de la siguiente forma en visual studio 2022

finicio = CDate(Fechadesde.Value).ToString( "dd/MM/yyyy")
ffin = CDate(Fechahasta.Value).ToString( "dd/MM/yyyy")

Es decir, fuerzo los formatos de la fechas a "dd/MM/yyyy"


sql = "SELECT * FROM " & estacion & " WHERE F_INICIO BETWEEN CDate('" & finicio & "') AND CDate('" & ffin & ")"

Así me está funcionando con base de datos Access.

Si utilizas MySql o MariaDb

finicio = CDate(Fechadesde.Value).ToString( "yyyy-MM-dd")
ffin = CDate(Fechahasta.Value).ToString( "yyyy-MM-dd")

Es decir, fuerzo los formatos de la fechas a "yyyy-MM-ddy"


sql = "SELECT * FROM " & estacion & " WHERE F_INICIO BETWEEN '" & finicio & "' AND '" & ffin & "' "


Un Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar