Access - Actualizar campo en tabla fechas

 
Vista:
sin imagen de perfil

Actualizar campo en tabla fechas

Publicado por Alejandro (8 intervenciones) el 10/06/2023 15:49:10
Hola muy buenas, como están
Quisera su ayuda porque necesito calcular las fechas de finiquito para una base de datos en Access que me entregue el siguiente resultado:



Tengo los siguientes datos
Fecha de ingreso 24-10-2020
Fecha de finiquito 30-06-2023

Logre mediante consulta llegar a los dos años
Años Servicio: DifFecha("aaaa";[FECHA INGRESO];[Fecha de Finiquito])-1

Meses servicio: desde el 24-10-2020 hasta el 23-10-2022 serian 2 años, desde el 24-10-2022 hasta el 22-06-2023 serian 8 meses

Días servicio: desde el 23-06-2023 hasta el 30-06-2023 serian 7 dias

Meses servicio y días servicio no se como lograr estos datos

Ojala puedan ayudarme a obtener estos registros

Atte

Alejandro

Captura-de-pantalla-2023-06-10-094712
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Actualizar campo en tabla fechas

Publicado por Anonimo (3316 intervenciones) el 11/06/2023 19:35:52
Con la funcioón DateDiff se pueden obtener no solo los años, tambien los meses, dias, horas ....

Solo se ha de tener en cuenta que no diferencia el mes cuando cuenta años, el día cuando cuenta meses ....

Un dato extremo, comienza a trabajar el día 31 de diciembre (del año 2020) y termina el dia 6 de enero del año 2021 (Un paje de los reyes magos):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
F_Inicio= CDate("31/12/2020")
F_Termino= CDate("6/1/2021")
 
?DateDiff("yyyy",F_Inicio,F_Termino)
 1
 
?month(F_Inicio)
 12
?Month(F_Termino)
 1
? Month(F_Inicio)>= Month(F_Termino)
Verdadero
 
?DateDiff("yyyy",F_Inicio,F_Termino) + (Month(F_Inicio)>= Month(F_Termino))
 0

La formula (que solo utiliza los años) devuelve una unidad (un año), pero es falso
Si se le añade la respuesta logica de comparar los meses (-1 para True, cero para false) ya se obtiene el resultado correcto.

Una opción alternativa es que devuelva los meses y aplicar la siguiente lógica:

.- Años trascurridos =cociente entero de dividirlos por doce ===> DateDiff("m",F_Inicio,F_Termino) \ 12
.- Meses transcurridos = aplicar mod 12 sobre los meses, devolverá el resto de la división ==> DateDiff("m",F_Inicio,F_Termino) Mod 12

Continuar esa lógica para obtener los días
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar