Fechas SQL Access

      • 1,010
      • mensajes
      • miembro desde
      • 27/11/01
    #1 Fechas SQL Access

    Siempre tengo problemas con las fechas en SQL y ASP. No funciona.

    Estoy haciendo una agenda, que debe mostrar un evento si la fecha actual está comprendida entre otras dos fechas del evento.

    la sentencia SQL que hice para esto es:

    "SELECT * FROM Agenda WHERE " & Date & " BETWEEN FechaDesde AND FechaHasta"
    No trae nada (y sí debería)

    Si pongo comillas:
    "SELECT * FROM Agenda WHERE '" & Date & "' BETWEEN FechaDesde AND FechaHasta"
    Microsoft JET Database Engine error '80040e07'
    No coinciden los tipos de datos en la expresión de criterios.

    Si pongo #
    SELECT * FROM Agenda WHERE #" & Date & "# BETWEEN FechaDesde AND FechaHasta
    Tampoco trae resultados.

    Lo curioso es que si pongo la sentencia incompleta sí funciona.
    "SELECT * FROM Agenda WHERE FechaDesde < #" & Date & "#"
    Arroja resultados correctos

    Pero si completo la sentencia:
    "SELECT * FROM Agenda WHERE FechaDesde < #" & Date & "# AND FechaHasta > #" & Date & "#"
    No arroja resultados (sí debería)

    Ya no sé que hacer. Alguna sugerencia?

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    4 comentarios / 76916 Visitas

      • 58
      • mensajes
      • miembro desde
      • 30/01/04
    19/03/2004
    #2

    Hay un problema con eso, la sintaxis para el between es

    SELECT campos FROM tablas
    WHERE campo BETWEEN valorInferior AND valorSuperior

    asique una consulta podria ser:
    SELECT * from ventas where fechaCarga BETWEEN #2004-01-1# AND #2004-04-01#

    vos queres poner como rango a dos campos, "campo" tiene que ser el nombre de un campo, y "valorInferior" y "valorSuperior" deben ser valores, no pueden ser campos.

    Asique del BETWEEN olvidate.

    Lo que queres hacer vos lo tenes que hacer como el ultimo ejemplo que pusiste. No te trae resultados?. En que formato le estas pasando la fecha? Proba mandarselo como Año Mes Dia.
    Acordate que te va a sacar las que son = porque la restriccion es solo < y >.

      • 1,010
      • mensajes
      • miembro desde
      • 27/11/01
    19/03/2004
    #3

    Ok. entiendo lo del between.

    Pero si pongo en este formato

    "SELECT * FROM Agenda WHERE FechaDesde < #DD/MM/AAA# AND FechaHasta > #DD/MM/AAA#"
    No arroja resultados (sí debería)

    en cambio
    "SELECT * FROM Agenda WHERE FechaDesde < #DD/MM/AAA#" si lo hace.

    De todos modos es todo un tema la configuración del servidor, porque en mi computadora localmente funciona con "#" pero si lo subo al servidor ya no anda el #.

      • 1,010
      • mensajes
      • miembro desde
      • 27/11/01
    19/03/2004
    #4

    Miren esto, que extraño, que podrá ser?

    En el servidor ejecuto: SELECT fechadesde,fechahasta FROM AGENDA

    y me trae:
    fechadesde fecha hasta
    3/1/aaaa 5/3/aaaa
    2/1/aaaa 3/3/aaaa
    3/16/aaaa 3/18/aaaa
    2/1/aaaa 3/3/aaaa

    porque sale "aaaa" en lugar de salir el año ?

      • 58
      • mensajes
      • miembro desde
      • 30/01/04
    20/03/2004
    #5

    Que motor de base de datos es? (tanto en tu maquina, localmente como en el servidor)


    Estas seguro que los campos fechaDesde y fechaHasta son del tipo datetime? Es posible que sean varchar eso explicaria lo del aaaa y lo de que no funcione el #. Si son string/varchar, no vas a poder hacer la consulta de esa forma porque lo que va a comparar seran strings y no fechas. te va a servir si lo grabas como yyyy-mm-dd

    Fijate donde estas haciendo el insert a ver si estas insertando bien el año.

IR ARRIBA