Apúntate a la Zona De Descargas Reservadas (ZDDR). Solo son 20 Euros
Con solo 20€ ayudarás
a mantener el foro.
Descarga por SMS.
entrar

Añadir a Google Seguir a udias en Twitter

Á:gora de programación
Todo lo que sueñas, se puede diseñar.
We build your dreams.

 - Principal - Responder - Estadísticas - Buscar - Mi Perfil - Salir - Lista de usuarios -  - Zona de Descargas

Foros en Udias.com / FileMaker / resta de fechas
Autor Mensaje

Miembro

Ocasional

  Karma   7

#1 Publicado: 20 Sep 2006 06:41 desde Peru
[Editar]


de que forma puedo hacer la resta de dos fechas, de tal forma que el resultado se muestre en años, meses y días. Gracias.

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Campex winxp

Administrador


  Karma               1240

#2 Publicado: 20 Sep 2006 07:51 desde Cantabria
[Editar]


Directamente restando los campos donde tienes las fechas y dándole el formato que desees.

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 4 * MySQL * Win XP/Vista.

Miembro

Ocasional

  Karma   7

#3 Publicado: 25 Sep 2006 17:42 desde Peru
[Editar]


te pongo un ejemplo, al restar las fechas 01/01/1991 - 01/01/1990, la respuesta es 0 años, 11 meses y 31 días, cuando lo correcto debería ser 1 año, 0 meses y 0 días.
mi bd tiene dos campos de fechas (fecha1, fecha2) y tres campos calculation con las siguientes formulas:
años: Year(fec fin - fec ini) -1
meses: Month(fec fin - fec ini) - 1
días: Day(fec fin - fec ini)

Espero respuesta. Gracias.

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Campex winxp

Administrador


  Karma               1240

#4 Publicado: 25 Sep 2006 17:48 desde Cantabria
[Editar]


Contestado por Perezoso en el tópico "Resta de Fechas y resultado en días", que aparece a pie de página en "Tópicos relacionados con resta de fechas"

Crea 2 campos con formato de FECHA: Fecha1 y Fecha2 Crea un campo de calculo NUMERICO para el resultado: Dias. La "formula" para introducir en ese campo de calculo sera esta: Fecha1 - Fecha2 (o: Fecha2 - Fecha1) Te saldra un resultado positivo o negativo en funcion de cual de las 2 fechas es mayor ... si deseas que nunca aparezca el signo menos, modifica la formula de esta manera: Abs(Fecha1 - Fecha2). Saludos.

Un saludo

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 4 * MySQL * Win XP/Vista.

Moderador


  Karma           396

#5 Publicado: 25 Sep 2006 18:02 - Editado por: Perezoso desde Spain
[Editar]


2 formulas, recopiladas hace algun tiempo, de mis andaduras por la red (creo recordar que estan bajadas de FMClub y/o Macuarium) ... prueba y experimenta:

*************************
If(Month(Fecha Nacimiento) = Month(Get(CurrentDate)); If(Day(Fecha Nacimiento) = Day(Get(CurrentDate)); Year(Get(CurrentDate)) - Year(Fecha Nacimiento); Year(Get(CurrentDate)) - Year(Fecha Nacimiento) - 1); If(Month(Fecha Nacimiento) > Month(Get(CurrentDate)); Year(Get(CurrentDate)) - Year(Fecha Nacimiento) - 1; Year(Get(CurrentDate)) - Year(Fecha Nacimiento)))

& " a- " &

If(Day(Fecha Nacimiento) = Day(Get(CurrentDate));
Mod((Month(Get(CurrentDate)) - Month(Fecha Nacimiento) + 12); 12);
Mod((Month(Get(CurrentDate)) - Month(Fecha Nacimiento) + 11); 12))

& " m- " &

If(Day(Get(CurrentDate)) = Day(Fecha Nacimiento); (Day(Get(CurrentDate)) - Day(Fecha Nacimiento)); (Day(Get(CurrentDate)) - Day(Fecha Nacimiento)) + 30)
& "d"

*************************
NumToText(Year(Today) - Year(Fecha Nacimiento) - Case(Today<
Date(Month(Fecha Nacimiento); Day(Fecha Nacimiento); Year(Today)); 1; 0)) &
" años, " &

NumToText(Mod(Month(Today) - Month(Fecha Nacimiento) + 12 - Case(Day(Today)
< Day(Fecha Nacimiento); 1; 0); 12)) & " meses, " &

NumToText(Day(Today) - Day(Fecha Nacimiento) + Case(Day(Today) >= Day(Fecha
Nacimiento); 0; Day(Today- Day(Today)) < Day(Fecha Nacimiento); Day(Fecha
Nacimiento); Day(Today- Day(Today)))) & " días"

*************************

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Soy todo oidos ;-) Ubuntu & Win XP # FileMaker: 5 - 10

Moderador


  Karma           396

#6 Publicado: 25 Sep 2006 18:23 desde Spain
[Editar]


He probado las formulas con FM 6 (hay que cambiar en la 1ª formula: Get(CurrentDate) por Status(CurrentDate)) y el resultado ha sido el siguiente:

Fecha Nacimiento: 09-03-1997

Resultado formula 1ª (la azul): 9 a- 5 m- 46d
Resultado formula 2ª (la roja): 9 años, 6 meses, 16 días

Parece claro cual funciona bien y cual funciona peor,¿no?

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Soy todo oidos ;-) Ubuntu & Win XP # FileMaker: 5 - 10

Moderador


  Karma           396

#7 Publicado: 25 Sep 2006 18:39 - Editado por: Perezoso desde Spain
[Editar]


Resumiendo ... que me quedo con la roja (la 2ª).

Para FM 5/6:

NumToText(Year(Today) - Year(Fecha Nacimiento) - Case(Today<
Date(Month(Fecha Nacimiento); Day(Fecha Nacimiento); Year(Today)); 1; 0)) &
" años, " &

NumToText(Mod(Month(Today) - Month(Fecha Nacimiento) + 12 - Case(Day(Today)
< Day(Fecha Nacimiento); 1; 0); 12)) &
" meses, " &

NumToText(Day(Today) - Day(Fecha Nacimiento) + Case(Day(Today) >= Day(Fecha
Nacimiento); 0; Day(Today- Day(Today)) < Day(Fecha Nacimiento); Day(Fecha
Nacimiento); Day(Today- Day(Today)))) &
" días"


Para FM 7/8:

GetAsText(Year(Get ( CurrentDate )) - Year(Fecha Nacimiento) - Case(Get ( CurrentDate )<
Date(Month(Fecha Nacimiento); Day(Fecha Nacimiento); Year(Get ( CurrentDate ))); 1; 0)) &
" años, " &

GetAsText(Mod(Month(Get ( CurrentDate )) - Month(Fecha Nacimiento) + 12 - Case(Day(Get ( CurrentDate ))
< Day(Fecha Nacimiento); 1; 0); 12)) &
" meses, " &

GetAsText(Day(Get ( CurrentDate )) - Day(Fecha Nacimiento) + Case(Day(Get ( CurrentDate )) >= Day(Fecha Nacimiento); 0; Day(Get ( CurrentDate )- Day(Get ( CurrentDate ))) < Day(Fecha Nacimiento); Day(Fecha Nacimiento); Day(Get ( CurrentDate )- Day(Get ( CurrentDate ))))) &
" días"


Esta formula trabaja con una fecha introducida (Fecha Nacimiento) y otra automática que es la fecha actual. La fecha actual se puede cambiar para poder comparar 2 fechas de 2 campos, solo hay que poner el nombre del campo (p.e. "Fecha2") en lugar de Today o de Get ( CurrentDate ).

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Soy todo oidos ;-) Ubuntu & Win XP # FileMaker: 5 - 10

Moderador


  Karma           396

#8 Publicado: 25 Sep 2006 20:34 desde Spain
[Editar]


Bonita esta otra formula. En este caso solo para FM8 y superiores.

Para comparar una fecha con la fecha actual:

Let ( [
neg = Case ( Fecha Nacimiento > Get(CurrentDate) ; -1 ; 1 ) ;
d1 = Case ( neg < 0 ; Get(CurrentDate) ; Fecha Nacimiento ) ;
d2 = Case ( neg < 0 ; Fecha Nacimiento ; Get(CurrentDate) ) ;

d = Mod ( Day ( d2 ) - Day ( d1 ) ; Day (Date ( Month ( d1 ) + 1 ; 0; Year ( d1 ) ) ) ) ;
m = Mod ( Month ( d2 ) - Month ( d1 ) - ( Day ( d2 ) < Day ( d1 ) ) ; 12 ) ;
a = Year ( d2 ) - Year ( d1 ) - ( Month ( d2 ) < Month ( d1 ) )
];
a * neg & " años. " &
m * neg & " meses. " &
d * neg & " dias."
)


Para comparar 2 fechas de 2 campos:

Let ( [
neg = Case ( Fecha1 > Fecha2 ; -1 ; 1 ) ;
d1 = Case ( neg < 0 ; Fecha2 ; Fecha1 ) ;
d2 = Case ( neg < 0 ; Fecha1 ; Fecha2 ) ;

d = Mod ( Day ( d2 ) - Day ( d1 ) ; Day (Date ( Month ( d1 ) + 1 ; 0; Year ( d1 ) ) ) ) ;
m = Mod ( Month ( d2 ) - Month ( d1 ) - ( Day ( d2 ) < Day ( d1 ) ) ; 12 ) ;
a = Year ( d2 ) - Year ( d1 ) - ( Month ( d2 ) < Month ( d1 ) )
];
a * neg & " años. " &
m * neg & " meses. " &
d * neg & " dias."
)


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Soy todo oidos ;-) Ubuntu & Win XP # FileMaker: 5 - 10

Moderador


  Karma           396

#9 Publicado: 25 Sep 2006 20:53 - Editado por: Perezoso desde Spain
[Editar]


Esta variante que he hecho de la formula anterior, creo que tb deberia funcionar correctamente:

Para FM 5/6:


Year( Status(CurrentDate) ) - Year( Fecha Nacimiento ) - ( Month( Status(CurrentDate) ) < Month( Fecha Nacimiento ) ) & " años. " &
Mod( Month( Status(CurrentDate) ) - Month( Fecha Nacimiento ) - ( Day( Status(CurrentDate) ) < Day( Fecha Nacimiento ) ) ; 12 ) & " meses. " &
Mod( Day( Status(CurrentDate) ) - Day( Fecha Nacimiento ) ; Day( Date( Month( Fecha Nacimiento ) + 1 ; 0; Year( Fecha Nacimiento ) ) ) ) & " dias."


Para FM 7/8

Year ( Get(CurrentDate) ) - Year ( Fecha Nacimiento ) - ( Month ( Get(CurrentDate) ) < Month ( Fecha Nacimiento ) ) & " años. " &
Mod ( Month ( Get(CurrentDate) ) - Month ( Fecha Nacimiento ) - ( Day ( Get(CurrentDate) ) < Day ( Fecha Nacimiento ) ) ; 12 ) & " meses. " &
Mod ( Day ( Get(CurrentDate) ) - Day ( Fecha Nacimiento ) ; Day ( Date ( Month ( Fecha Nacimiento ) + 1 ; 0; Year ( Fecha Nacimiento ) ) ) ) & " dias."


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Soy todo oidos ;-) Ubuntu & Win XP # FileMaker: 5 - 10

Miembro

Constante

  Karma         127

#10 Publicado: 26 Sep 2006 17:53 desde Spain
[Editar]


...desde luego...quien no reste fechas es por que no quiere...

Ya que el cumple años es anual, puedes tb omitir el año de la fecha comparando sólo el día y mes...si lo que pretendes es conseguír un aviso de dicho acontecimiento...

Aunque más completo que lo ya expuesto difícil de ver es.

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
:-)

Miembro

Ocasional

  Karma   1

#11 Publicado: 3 Feb 2010 03:28 desde Chile
[Editar]


Disuclpen la pregunta reiterativa, pero en mi caso la resta de las fechas no me ningun resultado.

Explico mi situacion

Dos bases de datos en la misma tabla A y B. En la tabla A tengo un campo de formato fecha ( Fecha de entrega ), en la tabla B esta el campo con formato de fecha ( Fecha de Venta ).

Hecha ya la relacion entre ambas BD, necesito resta de Fecha de Venta - Fecha de entrega y que el rsultado lo deposite en un tercer campo en la base A llamado dias de retrazo.

NOTA: he hecho el calculo directo y no me da ningun resultado. Estoy trabajando con FM 10.

Si me pueden dar una ayuda se los agradesco de antemano.

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Administrador


  Karma               1240

#12 Publicado: 3 Feb 2010 08:14 desde Cantabria
[Editar]


Para que la resta funcione la relación tendría que ser de uno a uno, es decir de un registro en A a un registro en B. Si es de uno a muchos... ¿De cual restas?

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 4 * MySQL * Win XP/Vista.

Miembro

Ocasional

  Karma   1

#13 Publicado: 3 Feb 2010 18:34 desde Cantabria
[Editar]


La resta se hace del campo fecha de venta - fecha de entrega , que me debiera dar un numero determinado de dias , no mayor a 31

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Miembro

Ocasional

  Karma   1

#14 Publicado: 3 Feb 2010 18:36 desde Cantabria
[Editar]


Lo de la relacion 1 a 1 no me quedo claro .

Gracias de antemano

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo


Administrador


  Karma               1240

#15 Publicado: 3 Feb 2010 18:40 desde Spain
[Editar]


Un registro de la tabla A con un registro de la tabla B, no uno de la tabla A con muchos del la tabla B.

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 4 * MySQL * Win XP/Vista.
Su respuesta

Estilo Negrillas  Estilo Italico  Estilo Subrayado  URL De La Imagen  URL De La Web  Preformatted Text  YouTube URL  Sin código BB
Emoticones
:) ;) :up: :down: :biglol: :confused :cool: :mad: :sad: :shame: :smirk: :tongue: ... Más  Emoticones desactivados
Color de texto
Texto en negro Texto en blanco Texto en gris Texto en rojo Texto en azul Texto en verde Texto en rojo oscuro Texto en cian Texto en azul oscuro Texto en púrpura Texto en amarillo Texto en rosa Texto en naranja Texto en verde oliva Texto en marrón



 » Usuario  » Contraseña 
Solo Usuarios Registrados Pueden Postiar Aqui.
 

Tópicos relacionados con resta de fechas


Conectados: Invitados - 12
Miembros - 1 border=0 jcu
Conexiones máximas: 56 [17 May 2010 09:41]
Invitados - 39 / Miembros - 17
En verde usuarios ZDDR

Realizado con miniBB © 2001-2010
Para Udias.com © 1996-2010