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.
- Manejar siempre las fechas en base de datos con el formato yyyy/MM/dd.
- 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”