![]() |
Calculo diferencia años entre dos fechas
Buenos dias.
Hace ya un tiempo que no aparecía por aquí pues tenía un poco olvidada la programación, pero ahora me ha surgido la necesidad de actualizar una base de datos y en ella debo controlar la diferencia en años entre dos fechas. El proceso que hago es el siguiente:
Este proceso funciona bien pero me da un resultado "erróneo o no deseado". Si tengo como fecha inicio 1/1/2000 y fecha fin 31/12/2005, el resultado es 5, pero para mi el resultado debería ser 6 ya que los años pasados son: 2000, 2001, 2002, 2003, 2004 y 2005. Como podria controlar esto? Una forma "fácil" aunque no se si muy correcta seria sumar 1 al valor Anyo Anyo:=(a-a1)+1 No se si se podría hacer calculando el numero de días o meses y luego dividir.... Como siempre gracias por adelantado por leerme. Saludos Josep |
El problema es que para dar una solución debes especificar bien cual es la salida que quieres...
Contesta cual sería la respuesta a las siguientes fechas (explicado de una forma programática): 1/1/2000 y 31/12/2005 (6,0027 años) (6 años y 1 día) => Según tú esto debería dar 6 ¿Porqué? 1/1/2000 y 02/01/2005 (5,0082 años) (5 años y 3 días) => ?? 1/6/2000 y 31/06/2005 (5,0822 años) (5 años y 30 días)=> ?? 1/6/2000 y 31/12/2005 (5,5863 años) (5 años y 214 días)=> ?? AÑADO1: Te he puesto la diferencia de años en decimal a ver si te ayuda... AÑADO2: Diferencia en años y días... |
Buenos días y gracias por la respuesta.
Para mi son siempre años naturales, cuando un comisario saca licencia vale por un año natural, tanto si la saca el 1/1, como el 30/6, siempre caduca el 31/12 de ese año. Con lo que una licencia del 1/1/2020 finaliza el 31/12/2020 y la antigüedad es un año, que es el valor que quiero acumular. Si la saca el 1/1/2020 y la renueva cada año hasta el 2022, luego en 2023 no renueva el valor a guardar es 3, 2020, 2021 y 2022, Aquí tendrá fecha de baja el 31/12/2022. No se si se entiende bien Saludos Josep |
Por lo tanto :
|
Gracias duilioisola
Es más o menos lo que decía yo de sumar 1 al resultado. Pensaba que habría otra forma, pero me parece correcto y simple. Saludos Josep |
La franja horaria es GMT +2. Ahora son las 02:14:18. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi