none
Comparar fechas de la base de datos en sql server 2005 RRS feed

  • Pregunta

  • Hola amigos, he intentado de varias maneras y no me resulta nada.

    Lo que quiero es compara el date.now.date con las fechas que esten guardadas en la base datos. El resultado que espero es que cuando selecciono algo de un combobox me carga las fechas que le pertenecen. Puede ser 1 o muchas fechas. No he podido porque tuve que guardar la fecha en la base de datos como string, ya que no la quería almacenar con la hora. Aparte que se ve más bonito con una fecha larga que con una corta. Entonces como les decía... quiero que las fechas que se carguen en el combobox sean mayores a la fecha actual. Tambien me gustaria comprobar la hora, pero eso es una tema aparte. Lo que me importa más es lo que les comento arriba. Si no lograron entenderme por favor preguntenme.

    Sería como algo así....


      Conexion.Close()
          
            Try
                Conexion.Open()
                Dim Sentencia As String = "SELECT DISTINCT NOMBREEVENTO FROM EVENTOS WHERE FECHAEVENTO >= '" & Date.Now.Date.ToLongDateString & "';"
                Dim DAdapter As New SqlDataAdapter(Sentencia, Conexion)
                Dim DSet As New DataSet
                Dim dt As New DataTable
                DAdapter.Fill(dt)
                cmbNombreEvento.DataSource = dt
                cmbNombreEvento.DisplayMember = dt.Columns(0).ToString()
                cmbNombreEvento.ValueMember = dt.Columns(0).ToString()
                cmbNombreEvento.SelectedIndex = -1
                cmbNombreEvento.Text = ""
                txtEntradaGeneral.Text = ""
                Timer1.Enabled = True
                Timer1.Interval = 1
                Timer1.Start()
            Catch ex As Exception
                MsgBox("Se ha producido el siguiente error: " & ex.Message, MsgBoxStyle.Critical)
            End Try

    Hay alguna manera de hacer la conversión de un campo de la base de datos internamente? Digo eso como para convertir internamente en campo tipo date para que se pueda comparar....
    sábado, 4 de julio de 2009 11:30

Respuestas

  • "Bernardo Troncoso" escribió:

    > Lo que quiero es compara el date.now.date con las fechas que esten guardadas en la base datos.
    >
    >  No he podido porque tuve que guardar la fecha en la base de datos como string, ya que no la
    > quería almacenar con la hora. Aparte que se ve más bonito con una fecha larga que con una corta

    Hola, Bernardo:

    La verdad es que no sé yo cómo se ve más bonito una fecha en SQL Server, pero si guardaras los valores en un campo tipo DateTime, aparte de no tener el problema que estás teniendo, podrías ver las fechas posteriormente en el formato que más te gustase.

    Como dices que guardas las "fechas" en un campo alfanumérico (cosa que SQL Server no interpretará como una fecha válida, hay que hacer una conversión), habrá que ver en qué formato las guardas.

    Suponiendo que las guardas en un formato concreto, por ejemplo, día/mes/año (cosa que no se aconseja en absoluto), podrás recuperar aquellas "fechas" (entre comillas) superiores o iguales al día actual de la siguiente manera:


        ' Formateamos la fecha actual a dia/mes/año
        '
        Dim fechaActual As String = String.Format("{0:dd/MM/yyyy}", Date.Now.Date)

        Dim Sentencia As String = _
             "SELECT DISTINCT NOMBREEVENTO " & _
             "FROM EVENTOS WHERE FECHAEVENTO >= '" & fechaActual & "'"

    Si utilizaras un formato distinto al comentado, pues ya sabes lo que tienes que hacer.

    Si el tipo de dato del campo fuera DateTime, que es lo recomendable, obtendrías las fechas (ahora sin comillas, porque eso sí son fechas) de la siguiente manera:

        Dim Sentencia As String = _
               "SELECT DISTINCT NombreEvento " & _
               "FROM EVENTOS WHERE FECHAEVENTO >= " & Date.Now.Date

    Un saludo


    Enrique Martínez [MS MVP - VB]

    domingo, 5 de julio de 2009 5:16
    Moderador

Todas las respuestas

  • Hola Aqui http://msdn.microsoft.com/es-es/library/ms187928.aspx tienes toda la irmación dew como convertir tu string a fecha en la sentencia SQL

    Espero que te sirva
    Oscar Avarez Guerras - Arquitecto Software en I3B (I+D+I) Blog:http://geeks.ms/blogs/oalvarez Por favor marca como respuesta si te ha ayudado esta respuesta
    sábado, 4 de julio de 2009 11:55
  • "Bernardo Troncoso" escribió:

    > Lo que quiero es compara el date.now.date con las fechas que esten guardadas en la base datos.
    >
    >  No he podido porque tuve que guardar la fecha en la base de datos como string, ya que no la
    > quería almacenar con la hora. Aparte que se ve más bonito con una fecha larga que con una corta

    Hola, Bernardo:

    La verdad es que no sé yo cómo se ve más bonito una fecha en SQL Server, pero si guardaras los valores en un campo tipo DateTime, aparte de no tener el problema que estás teniendo, podrías ver las fechas posteriormente en el formato que más te gustase.

    Como dices que guardas las "fechas" en un campo alfanumérico (cosa que SQL Server no interpretará como una fecha válida, hay que hacer una conversión), habrá que ver en qué formato las guardas.

    Suponiendo que las guardas en un formato concreto, por ejemplo, día/mes/año (cosa que no se aconseja en absoluto), podrás recuperar aquellas "fechas" (entre comillas) superiores o iguales al día actual de la siguiente manera:


        ' Formateamos la fecha actual a dia/mes/año
        '
        Dim fechaActual As String = String.Format("{0:dd/MM/yyyy}", Date.Now.Date)

        Dim Sentencia As String = _
             "SELECT DISTINCT NOMBREEVENTO " & _
             "FROM EVENTOS WHERE FECHAEVENTO >= '" & fechaActual & "'"

    Si utilizaras un formato distinto al comentado, pues ya sabes lo que tienes que hacer.

    Si el tipo de dato del campo fuera DateTime, que es lo recomendable, obtendrías las fechas (ahora sin comillas, porque eso sí son fechas) de la siguiente manera:

        Dim Sentencia As String = _
               "SELECT DISTINCT NombreEvento " & _
               "FROM EVENTOS WHERE FECHAEVENTO >= " & Date.Now.Date

    Un saludo


    Enrique Martínez [MS MVP - VB]

    domingo, 5 de julio de 2009 5:16
    Moderador
  • Al final terminé guardando la fecha como datetime y al obtenerla desde la aplicación la formateo de la manera que se vea más bonita con el String.Format.

    Muchas gracias.

    Bernardo.
    lunes, 20 de julio de 2009 1:30
  • Eso es lo mejor que puedes hacer. Verás como ahora no te duele la cabeza. Te podrá doler por otro motivo, pero no por el tema de las fechas. :-))
    Enrique Martínez [MS MVP - VB]
    lunes, 20 de julio de 2009 13:28
    Moderador