Le preparé este ejemplo:
TABLA
DISEÑO CONSULTA
RESULTADO DE LA CONSULTA
Otra forma más exacta con esta función. Pegue esta función en un módulo y la puede llamar desde cualquier parte.
Public Function fncDiFechas(ByVal FechaIni As Date, ByVal FechaFin As Date) As String
Dim vAño As Double
Dim vMes As Double
Dim vDia As Double
Rem Dim FechaFin As Date
Dim temp As Date
'Si no se metió la fecha, salimos sin más
If IsNull(FechaIni) Or IsNull(FechaFin) Then
fncDiFechas = ""
Exit Function
End If
'Comprobamos que la fecha inicial sea más antigua que la final
If FechaIni > FechaFin Then
temp = FechaIni
FechaIni = FechaFin
FechaFin = temp
ElseIf FechaIni = FechaFin Then 'Si las dos fechas son la misma
fncDiFechas = "0 días"
Exit Function
End If
'Calculas la diferencia en años
If Month(FechaIni) > Month(FechaFin) Then
vAño = DateDiff("yyyy", FechaIni, FechaFin) - 1
Else
vAño = DateDiff("yyyy", FechaIni, FechaFin)
End If
'Calculas la diferencia en meses
If day(FechaIni) > day(FechaFin) Then
vMes = DateDiff("m", DateAdd("yyyy", vAño, FechaIni), FechaFin) - 1
If vMes < 0 Then
vMes = 12 + vMes
vAño = vAño - 1
End If
Else
vMes = DateDiff("m", DateAdd("yyyy", vAño, FechaIni), FechaFin)
End If
'Calculas la diferencia en días
vDia = DateDiff("d", DateAdd("m", vAño * 12 + vMes, FechaIni), FechaFin) ' Mod 7
'Construyes la expresión
If vAño = 1 Then
fncDiFechas = vAño & " año"
ElseIf vAño > 1 Then
fncDiFechas = vAño & " años"
End If
If vMes = 1 Then
fncDiFechas = IIf(fncDiFechas = "", "", fncDiFechas & ", ") & vMes & " mes"
ElseIf vMes > 1 Then
fncDiFechas = IIf(fncDiFechas = "", "", fncDiFechas & ", ") & vMes & " meses"
End If
If vDia = 1 Then
fncDiFechas = IIf(fncDiFechas = "", "", fncDiFechas & " y ") & vDia & " día"
ElseIf vDia > 1 Then
fncDiFechas = IIf(fncDiFechas = "", "", fncDiFechas & " y ") & vDia & " días"
End If
End Function
El ejemplo que le dan si lo prueba no es exacto, por ejemplo si calcula la diferencia:
01/02/2020 y 01/03/2020 (año bisiesto) le da 29 días, pero se requiere es 1 mes.
Con la función que le suministro al llamarla desde la ventana de inmediato obtenemos:
?fncDiFechas("01/02/2020","01/03/2020")
1 mes.
Como puede ver en la consulta el empleado OLGA PEREZ solo laboró 1 mes.