Guardando y recuperando fechas de bases de datos

En alguna ocasión me ha ocasionado problemas la escritura y posterior lectura de fechas en una base de datos Access. Dichos problemas eran debidos a que se guardaban con un formato DD/mm/yyy y al recuperarlas este no era el correcto. Todo esto me dió muchos quebraderos de cabeza.

Encontré una solución que hasta ahora me ha ido muy bien.

  1. Manejar siempre las fechas en base de datos con el formato yyyy/MM/dd.
  2. Utilizar la función format de Access para darle ese formato a la hora de hacer INSERTS o SELECTS.

 

query = "INSERT INTO tbReal (MINUTO, FECHA, VALOR1, VALOR2) " & _
            "VALUES (" & min & ",format('" & sfecha & "','yyyy/mm/dd'),'" & v1 & "'," & v2 & ")"
            bd.ejecutar(query)

Por otra parte, creé las siguientes funcionas para pasar una fecha ya sea dada como String o como Date al formato string yyyy/MM/dd.

    Public Function generarFechaGenerica(ByVal sd As String) As String
        Dim out As String
        Dim d As Date
        Dim strDia As String
        Dim strMes As String
        Dim strAnyo As String

        d = Date.ParseExact(sd, "dd/MM/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo)

        If d.Day < 10 Then
            strDia = "0" & CStr(d.Day)
        Else
            strDia = CStr(d.Day)
        End If

        If d.Month < 10 Then
            strMes = "0" & CStr(d.Month)
        Else
            strMes = CStr(d.Month)
        End If

        strAnyo = CStr(d.Year)

        out = strAnyo & "/" & strMes & "/" & strDia
        Return out
    End Function

    Public Function generarFechaGenerica(ByVal d As Date) As String
        Dim out As String
        Dim strDia As String
        Dim strMes As String
        Dim strAnyo As String

        If d.Day < 10 Then
            strDia = "0" & CStr(d.Day)
        Else
            strDia = CStr(d.Day)
        End If

        If d.Month < 10 Then
            strMes = "0" & CStr(d.Month)
        Else
            strMes = CStr(d.Month)
        End If

        strAnyo = CStr(d.Year)

        out = strAnyo & "/" & strMes & "/" & strDia
        Return out
    End Function

0 Respuestas a “Guardando y recuperando fechas de bases de datos”



  1. Aún no hay comentarios

Escribe un comentario