Autor Tema: Fechas en consultas SQL  (Leído 7339 veces)

0 Usuarios y 1 Visitante están viendo este tema.

pedroesca

  • Megabyte
  • ***
  • Mensajes: 206
  • Reputación: +19/-0
  • "El conocimiento es libre"
    • Ver Perfil
Fechas en consultas SQL
« en: Junio 21, 2011, 11:21:42 pm »
Buenas tardes a todos, quisiera consultar si alguien podría orientarme respecto a como puedo traer determinados registros (de una BD obviamente), en los cuales la fecha (campo) sea las de la "semana actual". Por ejemplo: deseo mostrar todas las VENTAS de la semana en curso.
Desde ya muchas gracias.
"Si yo tengo una idea, tú otra, y la compartimos, ambos tendremos DOS ideas"

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Fechas en consultas SQL
« Respuesta #1 en: Junio 22, 2011, 12:12:56 am »
a traves de las funciones de fecha podes obtener lo que queres, por ejemplo:

Código: [Seleccionar]
Private Sub Form_Load()
    MsgBox DateAdd("D", Weekday(Date, vbMonday) * (-1) + 1, Date)
End Sub

eso te devuelve la primera fecha de la semana actual.

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Fechas en consultas SQL
« Respuesta #2 en: Junio 22, 2011, 11:25:21 am »
Sebaneo, yo creo que el se basa mas en SQL que en VB, de no ser asi funciona tal como lo indicaste... (Saludos bro)

Pedro, las consultas depende del formato que uses en tu SQL Server si tu campo evidentemente es datetime... Para ello te recomiendo que visualices este link..
Miguel Núñez.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Fechas en consultas SQL
« Respuesta #3 en: Junio 22, 2011, 12:10:31 pm »
Yo ago asi pedroesca, busco segun la fecha y lo listo en un control ListView, Ahora lo que vos tenes hacer es adaptar a tu conexión.


Código: [Seleccionar]
Private Sub Buscar_Click()
   
    Me.MousePointer = 11
   
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
    '// Conectar la Base Datos con ADO
        Call ConectarADO
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

        LReportes.ListItems.Clear
       
        F1 = Format(txtFecha1.Value, "yyyy/MM/dd")
        F2 = Format(txtFecha2.Value, "yyyy/MM/dd")
       
        StrSQL = "SELECT * FROM cuotas WHERE fpago BETWEEN '" & F1 & "' AND '" & F2 & "' AND forma='PG'"

        rsADO.Open StrSQL, cnADO, adOpenStatic, adLockOptimistic, adCmdText
       
        Do Until rsADO.EOF
            Set LV = LReportes.ListItems.Add()
            With rsADO
                LV.Text = .Fields("cedula")
                LV.SubItems(1) = strReplaceVer(.Fields("nombre") & "")
                LV.SubItems(2) = strReplaceVer(.Fields("fpago") & "")
                LV.SubItems(3) = Format(.Fields("cuota"), "##,###0") & ""
                LV.SubItems(4) = Format(.Fields("morozo"), "##,###0") & ""
                rsADO.MoveNext
            End With
        Loop
   
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
    '// Cerrar la base de datos y liberar la memoria
        Call CerrarADO
    '+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+
   
    Me.MousePointer = 0

End Sub

Cualquier duda avisa
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Fechas en consultas SQL
« Respuesta #4 en: Junio 22, 2011, 12:34:32 pm »
Enter, como haces si el formato fecha en SQL es el 103??? dd/mm/yyyy hh:mm:ss,
ya que para aplicar tu ejemplo el deberia hacer un Convert y alli ejecutar el select tal como lo expones...!
Miguel Núñez.

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Fechas en consultas SQL
« Respuesta #5 en: Junio 22, 2011, 01:12:34 pm »
como haces si el formato fecha en SQL es el 103??? no entiendo que es ese 103.
En MySQL siempre la fecha te guarda en formato Año,Mes,Dia. y lo que hice ahi es pasar le asi a la consulta.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Fechas en consultas SQL
« Respuesta #6 en: Junio 22, 2011, 01:49:14 pm »
Eso es cuando el campo es date, pero si es datetime (no se como se llamara en MySQL) alli en todo caso y para todos los casos se podria hacer esto:

F1 = Format(txtFecha1.Value, "YYYY/MM/DD")  '<--- Asume desde el 00:00:00
F2 = Format(txtFecha2.Value, "YYYY/MM/DD 23:59:59")

Igual uso F1 y F2 como string y en el formato YYYY/MM/DD, y lo mando asi como Enterariel cuando se que los campo son Date y no Datetime
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Fechas en consultas SQL
« Respuesta #7 en: Junio 22, 2011, 01:53:31 pm »
La verdad nunca use campo time juntos siempre los separo por columna la fecha en una columna y time en otra columna creo que es mas como trabajar asi.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

ssccaann43

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Fechas en consultas SQL
« Respuesta #8 en: Junio 22, 2011, 10:29:20 pm »
Si pero en SQL es diferente..! Vean el link que le recomende...!
Miguel Núñez.

pedroesca

  • Megabyte
  • ***
  • Mensajes: 206
  • Reputación: +19/-0
  • "El conocimiento es libre"
    • Ver Perfil
Re:Fechas en consultas SQL
« Respuesta #9 en: Junio 23, 2011, 07:15:46 pm »
Muchas gracias a todos por la buena onda y predisposición a compartir conocimientos, ya que tenía el prejuicio de que los programadores (o por lo menos los que conozco personalmente, y que son muy pocos) son muy reacios a responder consultas o brindar asistencia desinteresada. En fin, vamos a los bifes:
En mi sistema poseo un módulo de RECORDATORIOS/Tareas/etc, con lo cual cada determinado intervalo de tiempo, "actualizo" el panel de visualización de los mismos de la siguiente forma, aunque lo voy a poner de forma resumida:

''1° consulto todos
SQL="SELECT * From RECORDATORIOS Where Activo=SI;"
If Rs.State=1 Then Rs.Close
RS.Open Sql, Cn, adOpenStatic, adLockReadOnly

''2° comienzo a cargar los registros en la grilla
Do While Not Rs.EOF
      ' cargo los registros de HOY
      if Rs!Fecha=format(date,"mm/dd/yyyy") Then CargarDatosenGrid
       ' cargo los registros de MAÑANA
      if Rs!Fecha=format(date+1,"mm/dd/yyyy") Then CargarDatosenGrid
       ' cargo los registros de PASADO MAÑANA
      if Rs!Fecha=format(date+2,"mm/dd/yyyy") Then CargarDatosenGrid
      Rs.MoveNext
Loop
Rs.Close



Ahora bien, así como obtengo los registros de hoy, mañana, etc, quisera poder cargar los de la semana en curso.
"Si yo tengo una idea, tú otra, y la compartimos, ambos tendremos DOS ideas"

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Fechas en consultas SQL
« Respuesta #10 en: Junio 23, 2011, 07:34:17 pm »
Gracias por preguntar.  :D

Mira, creo que la linea:
If Rs.State=1 Then Rs.Close
esta demás, salvo que este dentro de un bucle o hallas declarado RS a un nivel superior, sino, dejalo asi.

Supongo que en CargarDatosenGrid tienes un add de esa consulta.

En todo caso creo que se puede resolver con el script que te dio Sebas
DateAdd("D", Weekday(Date, vbMonday) * (-1) + 1, Date)

pero modificando tu select quedaría mas o menos asi: (afinalo segun tu tipo de motor)
SELECT * From RECORDATORIOS Where Activo=SI and Fecha >= DateAdd("D", Weekday(Date, vbMonday) * (-1) + 1, Date) ;" (de memoria creo el pone -1 si es que te vas para atras y +1 si te vas a futuro)

Y en el grid ya lo reformateas si fuera necesario.

Saludos
Me encuentras en YAcosta.com

pedroesca

  • Megabyte
  • ***
  • Mensajes: 206
  • Reputación: +19/-0
  • "El conocimiento es libre"
    • Ver Perfil
Re:Fechas en consultas SQL
« Respuesta #11 en: Junio 23, 2011, 07:58:50 pm »
Jaja, primero que nada, la línea If Rs.State=1 Then Rs.Close acostumbré a colocarla no se porque, tuve un mentor en programación que me enseñó así y se me quedó grabada esa línea (?), mas que nada por si se me olvida cerrar por algún lugar un recordset, jaja, en fin, gracias por la respuesta, y ni bien pueda colgar unas capturas en el algún server de imágenes (puesto que no se hacerlo), las estaré subiendo acá. Gracias nuevamente....
"Si yo tengo una idea, tú otra, y la compartimos, ambos tendremos DOS ideas"

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Fechas en consultas SQL
« Respuesta #12 en: Junio 23, 2011, 08:06:13 pm »
A mi me paso exactamente lo mismo. Hasta que definí como politica de programacion (asuuu) que nunca declararía rs a nivel global y solo a nivel de modulo, de esa forma cada vez que entre a ese modulo siempre tendré la seguridad que no esta en memoria y por tanto no cerrarla. todo lo que declaro a nivel global lo pongo con una G, osea: rsG .

Me cuentas como te va con lo de la fecha, si pudes un pantallazo de como quieres verlo y ahora en la noche q llegue a casa le doy una checada también.

 :D
Me encuentras en YAcosta.com

wolf_kof

  • Visitante
Re:Fechas en consultas SQL
« Respuesta #13 en: Junio 25, 2011, 12:05:52 am »
rs.filter = "fecha = #" & campo & "#"