Problema con fechas y DATEDIFF

Tengo un problema con la función DateDiff para evaluar la diferencia entre dos fechas.

Resulta que si escribo en la ventana de ejecución inmediata de Visual Basic la siguiente sentencia:

?DateDiff("yyyy", "1/01/2011", "1/01/2012")

Obtengo el resultado correcto igual a 1.

Sin embargo, en un procedimiento y suponiendo que evalúe el resultado al pulsar un botón de comando, la misma sentencia:

Private Sub Ejemplo_click()

dim valor as date

valor = DateDiff("yyyy", "1/01/2011", "1/01/2012")
MsgBox "valor=" & valor

End Sub

me da como resultado el valor incorrecto de 31/12/1899.

He hecho tropecientas pruebas y no he encontrado la solución en la red. Es curioso porque si aplico:

valor = DateDiff("yyyy", "1/01/2012", "1/01/2012"),

el resultado es 0:00:00.

Lo he probado tanto en Windows Vista como en XP, con idénticos resultados; he verificado la configuración regional y de idioma de Windows, por si las moscas, pero no encuentro solución.

Si pongo valor=DateDiff("yyyy", "1/01/2016", "1/01/2012"), que debería dar -4, muestra un resultado de 26/12/1899, vamos que mi calculadora anda algo desfasadilla, jejejj.

1 respuesta

Respuesta
1

El error lo tienes en que defines la variable valor como fecha, por eso te devuelve el resultado como si fuera una fecha. Si cambias la variable a un tipo numérico (byte, integer, long..., según tus necesidades), ya obtienes el resultado que esperas:

Private Sub Ejemplo_click()
dim valor as long
valor = DateDiff("yyyy", "1/01/2011", "1/01/2012")
MsgBox "valor=" & valor
End Sub

Así el Msgbox te muestra 1, que es lo que quieres.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas