Cálculo de la edad

12/05/2010 - 18:37 por MADIAZ | Informe spam
Hola a todos.

Necesito calcular el cumpleaños, bueno, realmente los cumpleaños de
los clientes en los próximos siguientes días, he encontrado una
función en internet, pero no me funciona: Int((DATE()-{12/05/2009})/
365.2425) en teoría me devolvería 0 si hoy es el cumpleaños, pero no
tiene en cuenta los años bisiestos y el cálculo evidentemente es
erróneo.

Alguien me puede ayudar, por favor.

Gracias anticipadas
Miguel Ángel Díaz.

Preguntas similare

Leer las respuestas

#11 Luis Maria Guayan
24/05/2010 - 18:18 | Informe spam
A mi me retorna

0 años, 0 meses y 1 días

Mira de tomarla nuevamente de



Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________


El 24/05/2010 09:27, aldrin escribió:
Por que da esto????

? Diferencia_AMD(DATE()-1, DATE())

0 años, 11 meses y 30 días.

?????????????????????????????????


El 22/05/2010 17:26, MADIAZ escribió:
On 13 mayo, 02:07, Luis Maria Guayan
wrote:

Esta otra función si queres los años, meses y días

? Diferencia_AMD(DATE(1964,10,07), DATE())

FUNCTION Diferencia_AMD(tdIni, tdFin)
LOCAL ldAux, lnAnio, lnMes, lnDia, lcRet
* Fecha inicial siempre menor
IF tdIni> tdFin
ldAux = tdIni
tdIni = tdFin
tdFin = ldAux
ENDIF
lnAnio = YEAR(tdFin) - YEAR(tdIni)
ldAux = GOMONTH(tdIni, 12 * lnAnio)
* No cumplio el año aun
IF ldAux> tdFin
lnAnio = lnAnio - 1
ENDIF
lnMes = MONTH(tdFin) - MONTH(tdIni)
IF lnMes< 0
lnMes = lnMes + 12
ENDIF
lnDia = DAY(tdFin) - DAY(tdIni)
IF lnDia< 0
lnDia = lnDia + DiasDelMes(tdIni)
ENDIF
* Si el dia es mayor, no cumplio el mes
IF (DAY(tdFin)< DAY(tdIni))
IF lnMes = 0
lnMes = 11
ELSE
lnMes = lnMes - 1
ENDIF
ENDIF
lcRet = ALLTRIM(STR(lnAnio))+ " años, " + ;
ALLTRIM(STR(lnMes))+ " meses y " + ;
ALLTRIM(STR(lnDia))+ " días"
RETURN lcRet
ENDFUNC

FUNCTION DiasDelMes(tdFecha)
LOCAL ld
ld = GOMONTH(tdFecha,1)
RETURN DAY(ld - DAY(ld))
ENDFUNC

Luis María Guayán
Tucumán, Argentina
_________________________http://www.PortalFox.com
Nada corre como un zorro
_________________________

El 12/05/2010 13:37, MADIAZ escribió:

Hola a todos.



Necesito calcular el cumpleaños, bueno, realmente los cumpleaños de
los clientes en los próximos siguientes días, he encontrado una
función en internet, pero no me funciona: Int((DATE()-{12/05/2009})/
365.2425) en teoría me devolvería 0 si hoy es el cumpleaños, pero no
tiene en cuenta los años bisiestos y el cálculo evidentemente es
erróneo.



Alguien me puede ayudar, por favor.



Gracias anticipadas
Miguel Ángel Díaz.





Gracias a todos, me habéis ayudado mucho.

Saludos desde España
Miguel Ángel.



Respuesta Responder a este mensaje
#12 aldrin
24/05/2010 - 18:32 | Informe spam
La url que me pasaste es la función de calculo de edad, y la función que
yo te digo es la que te da años, meses, dias.


? Diferencia_AMD(DATE(1964,10,07), DATE())

FUNCTION Diferencia_AMD(tdIni, tdFin)
LOCAL ldAux, lnAnio, lnMes, lnDia, lcRet
* Fecha inicial siempre menor
IF tdIni> tdFin
ldAux = tdIni
tdIni = tdFin
tdFin = ldAux
ENDIF
lnAnio = YEAR(tdFin) - YEAR(tdIni)
ldAux = GOMONTH(tdIni, 12 * lnAnio)
* No cumplio el año aun
IF ldAux> tdFin
lnAnio = lnAnio - 1
ENDIF
lnMes = MONTH(tdFin) - MONTH(tdIni)
IF lnMes< 0
lnMes = lnMes + 12
ENDIF
lnDia = DAY(tdFin) - DAY(tdIni)
IF lnDia< 0
lnDia = lnDia + DiasDelMes(tdIni)
ENDIF
* Si el dia es mayor, no cumplio el mes
IF (DAY(tdFin)< DAY(tdIni))
IF lnMes = 0
lnMes = 11
ELSE
lnMes = lnMes - 1
ENDIF
ENDIF
lcRet = ALLTRIM(STR(lnAnio))+ " años, " + ;
ALLTRIM(STR(lnMes))+ " meses y " + ;
ALLTRIM(STR(lnDia))+ " días"
RETURN lcRet
ENDFUNC

FUNCTION DiasDelMes(tdFecha)
LOCAL ld
ld = GOMONTH(tdFecha,1)
RETURN DAY(ld - DAY(ld))
ENDFUNC












El 24/05/2010 13:18, Luis Maria Guayan escribió:
A mi me retorna

0 años, 0 meses y 1 días

Mira de tomarla nuevamente de



Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________


El 24/05/2010 09:27, aldrin escribió:
Por que da esto????

? Diferencia_AMD(DATE()-1, DATE())

0 años, 11 meses y 30 días.

?????????????????????????????????


El 22/05/2010 17:26, MADIAZ escribió:
On 13 mayo, 02:07, Luis Maria Guayan
wrote:

Esta otra función si queres los años, meses y días

? Diferencia_AMD(DATE(1964,10,07), DATE())

FUNCTION Diferencia_AMD(tdIni, tdFin)
LOCAL ldAux, lnAnio, lnMes, lnDia, lcRet
* Fecha inicial siempre menor
IF tdIni> tdFin
ldAux = tdIni
tdIni = tdFin
tdFin = ldAux
ENDIF
lnAnio = YEAR(tdFin) - YEAR(tdIni)
ldAux = GOMONTH(tdIni, 12 * lnAnio)
* No cumplio el año aun
IF ldAux> tdFin
lnAnio = lnAnio - 1
ENDIF
lnMes = MONTH(tdFin) - MONTH(tdIni)
IF lnMes< 0
lnMes = lnMes + 12
ENDIF
lnDia = DAY(tdFin) - DAY(tdIni)
IF lnDia< 0
lnDia = lnDia + DiasDelMes(tdIni)
ENDIF
* Si el dia es mayor, no cumplio el mes
IF (DAY(tdFin)< DAY(tdIni))
IF lnMes = 0
lnMes = 11
ELSE
lnMes = lnMes - 1
ENDIF
ENDIF
lcRet = ALLTRIM(STR(lnAnio))+ " años, " + ;
ALLTRIM(STR(lnMes))+ " meses y " + ;
ALLTRIM(STR(lnDia))+ " días"
RETURN lcRet
ENDFUNC

FUNCTION DiasDelMes(tdFecha)
LOCAL ld
ld = GOMONTH(tdFecha,1)
RETURN DAY(ld - DAY(ld))
ENDFUNC

Luis María Guayán
Tucumán, Argentina
_________________________http://www.PortalFox.com
Nada corre como un zorro
_________________________

El 12/05/2010 13:37, MADIAZ escribió:

Hola a todos.



Necesito calcular el cumpleaños, bueno, realmente los cumpleaños de
los clientes en los próximos siguientes días, he encontrado una
función en internet, pero no me funciona: Int((DATE()-{12/05/2009})/
365.2425) en teoría me devolvería 0 si hoy es el cumpleaños, pero no
tiene en cuenta los años bisiestos y el cálculo evidentemente es
erróneo.



Alguien me puede ayudar, por favor.



Gracias anticipadas
Miguel Ángel Díaz.





Gracias a todos, me habéis ayudado mucho.

Saludos desde España
Miguel Ángel.



Respuesta Responder a este mensaje
#13 Luis Maria Guayan
24/05/2010 - 19:21 | Informe spam
OPs, disculpa, está en este URL al final del artículo

http://www.portalfox.com/article.php?sid62


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________


El 24/05/2010 13:32, aldrin escribió:
La url que me pasaste es la función de calculo de edad, y la función que
yo te digo es la que te da años, meses, dias.


>>>> ? Diferencia_AMD(DATE(1964,10,07), DATE())
>>>>
>>>> FUNCTION Diferencia_AMD(tdIni, tdFin)
>>>> LOCAL ldAux, lnAnio, lnMes, lnDia, lcRet
>>>> * Fecha inicial siempre menor
>>>> IF tdIni> tdFin
>>>> ldAux = tdIni
>>>> tdIni = tdFin
>>>> tdFin = ldAux
>>>> ENDIF
>>>> lnAnio = YEAR(tdFin) - YEAR(tdIni)
>>>> ldAux = GOMONTH(tdIni, 12 * lnAnio)
>>>> * No cumplio el año aun
>>>> IF ldAux> tdFin
>>>> lnAnio = lnAnio - 1
>>>> ENDIF
>>>> lnMes = MONTH(tdFin) - MONTH(tdIni)
>>>> IF lnMes< 0
>>>> lnMes = lnMes + 12
>>>> ENDIF
>>>> lnDia = DAY(tdFin) - DAY(tdIni)
>>>> IF lnDia< 0
>>>> lnDia = lnDia + DiasDelMes(tdIni)
>>>> ENDIF
>>>> * Si el dia es mayor, no cumplio el mes
>>>> IF (DAY(tdFin)< DAY(tdIni))
>>>> IF lnMes = 0
>>>> lnMes = 11
>>>> ELSE
>>>> lnMes = lnMes - 1
>>>> ENDIF
>>>> ENDIF
>>>> lcRet = ALLTRIM(STR(lnAnio))+ " años, " + ;
>>>> ALLTRIM(STR(lnMes))+ " meses y " + ;
>>>> ALLTRIM(STR(lnDia))+ " días"
>>>> RETURN lcRet
>>>> ENDFUNC
>>>>
>>>> FUNCTION DiasDelMes(tdFecha)
>>>> LOCAL ld
>>>> ld = GOMONTH(tdFecha,1)
>>>> RETURN DAY(ld - DAY(ld))
>>>> ENDFUNC
>>>>



El 24/05/2010 13:18, Luis Maria Guayan escribió:
A mi me retorna

0 años, 0 meses y 1 días

Mira de tomarla nuevamente de



Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________


El 24/05/2010 09:27, aldrin escribió:
Por que da esto????

? Diferencia_AMD(DATE()-1, DATE())

0 años, 11 meses y 30 días.

?????????????????????????????????


El 22/05/2010 17:26, MADIAZ escribió:
On 13 mayo, 02:07, Luis Maria Guayan
wrote:

Esta otra función si queres los años, meses y días

? Diferencia_AMD(DATE(1964,10,07), DATE())

FUNCTION Diferencia_AMD(tdIni, tdFin)
LOCAL ldAux, lnAnio, lnMes, lnDia, lcRet
* Fecha inicial siempre menor
IF tdIni> tdFin
ldAux = tdIni
tdIni = tdFin
tdFin = ldAux
ENDIF
lnAnio = YEAR(tdFin) - YEAR(tdIni)
ldAux = GOMONTH(tdIni, 12 * lnAnio)
* No cumplio el año aun
IF ldAux> tdFin
lnAnio = lnAnio - 1
ENDIF
lnMes = MONTH(tdFin) - MONTH(tdIni)
IF lnMes< 0
lnMes = lnMes + 12
ENDIF
lnDia = DAY(tdFin) - DAY(tdIni)
IF lnDia< 0
lnDia = lnDia + DiasDelMes(tdIni)
ENDIF
* Si el dia es mayor, no cumplio el mes
IF (DAY(tdFin)< DAY(tdIni))
IF lnMes = 0
lnMes = 11
ELSE
lnMes = lnMes - 1
ENDIF
ENDIF
lcRet = ALLTRIM(STR(lnAnio))+ " años, " + ;
ALLTRIM(STR(lnMes))+ " meses y " + ;
ALLTRIM(STR(lnDia))+ " días"
RETURN lcRet
ENDFUNC

FUNCTION DiasDelMes(tdFecha)
LOCAL ld
ld = GOMONTH(tdFecha,1)
RETURN DAY(ld - DAY(ld))
ENDFUNC

Luis María Guayán
Tucumán, Argentina
_________________________http://www.PortalFox.com
Nada corre como un zorro
_________________________

El 12/05/2010 13:37, MADIAZ escribió:

Hola a todos.



Necesito calcular el cumpleaños, bueno, realmente los cumpleaños de
los clientes en los próximos siguientes días, he encontrado una
función en internet, pero no me funciona: Int((DATE()-{12/05/2009})/
365.2425) en teoría me devolvería 0 si hoy es el cumpleaños, pero no
tiene en cuenta los años bisiestos y el cálculo evidentemente es
erróneo.



Alguien me puede ayudar, por favor.



Gracias anticipadas
Miguel Ángel Díaz.





Gracias a todos, me habéis ayudado mucho.

Saludos desde España
Miguel Ángel.








email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida