Jump to content
  • 0

berekening tussen 2 datums


Femca

Question

Posted

Hoi,

 

Is het mogelijk om een berekening te maken tussen 2 datums? Wat ik wil is het verschil laten berekenen tussen een eerste consultatie bvb 02/10/2002 en een tweede bvb 04/05/2011. Ik wil weten hoeveel maanden en jaren het verschil is uitgedrukt in jaren, maanden hier dus 8jaar 7maand.

 

Ik heb al geprobeerd met de functie Trim en LeftValues maar het lukt me niet.

 

Femca

8 answers to this question

Recommended Posts

  • 0
Posted

Misschien vergt het wat meer dan Year en Month.

 

Als je nu een berekening zou maken dat het resultaat in een return separated list geeft, in de vorm van aantal jaren, aantal maanden, aantal dagen.

 

Nu kun je met de Get(Value) functie de jaren isoleren als je enkel jaren nodig hebt, jaren en maanden, jaren, maanden en dagen indien je een van die resultaten nodig hebt.

 

Allemaal met 1 bestaande berekening.

Geeft meer flexibiliteit.

 

Een stap verder is de berekening in een custom function gieten, dan heb je die altijd bij de hand.

  • 0
Posted

dank je wel voor jullie reactie maar de functie DateDiff heb ik niet in Filemaker Pro 11.

Ik heb ondertussen zowel met GetValue als Year en Month gezwoegd en het lukt me niet om het verschil te laten berekenen tussen start en einddatum met 1 van deze functies.

  • 0
Posted

FileMaker gebruikt een nummer om de datum bij te houden, het is alleen het tonen op scherm dat aangepast wordt.

De gebruikte parameters zijn altijd maand, dag, jaar.

Het is dus eenvoudig om een datum manipulatie doen, FileMaker gebruikt nummers.

Je hebt dus dateStart en dateEnd als basis.

In je berekening controleer je eerst dat dateStart kleiner is dan dateEnd.

Is dat niet het geval, dan berekenen we het geheel omgekeerd.

 

Je bepaalt wat de dagen zijn, daarna de maanden, en dan de jaren.

 

Het eenvoudigste is het om dit in een Let() functie te zetten en dan het geheel te berekenen.

 

Je kunt iets doen zoals:

 

Let (
[
   rev = Case ( dateStart > dateEnd ; -1 ; 1 ) ;
   ds = Case ( rev < 0 ; dateEnd ; dateStart ) ;
   de = Case ( rev < 0 ; dateStart ; dateEnd ) ;

   d = mod ( Day ( de ) - Day ( ds ) ; Day ( Date ( Month ( ds ) + 1 ; 0; year ( ds ) ) ) ) ;

   m = mod ( Month ( de ) - Month ( ds ) - ( Day ( de ) < Day ( ds ) ) ; 12 ) ;

   y = Year ( de ) - Year ( ds ) - ( ( Month ( de ) - ( Day ( de ) < Day ( ds ) ) ) < Month ( ds ) )
 ];
   y * rev & ¶ & 
   m * rev & ¶ &  
   d * rev & ¶ &
   y & " jaren, " & m & " maanden, en " & d & " dagen" & ¶
)

 

In de resultaatberekening kun je nog eventueel een Case() zetten om, als de uitkomst 1 is voor een item, een resultaat weer te geven in de vorm van jaar, maand, dag, i.p.v. de meervoudsvorm.

 

Vermits het niet recursief is, kun je dit in een normale berekening gebruiken of het geheel in een custom function gieten.

 

Het is een ¶ separated list als resultaat, je kunt dus met de GetValue() elk onderdeel afzonderlijk uit de lijst halen.

  • 0
Posted
dank je wel voor jullie reactie maar de functie DateDiff heb ik niet in Filemaker Pro 11.

Ik heb ondertussen zowel met GetValue als Year en Month gezwoegd en het lukt me niet om het verschil te laten berekenen tussen start en einddatum met 1 van deze functies.

 

Ik heb deze berekening voor het berekenen van een verjaardag

 

If ( not IsEmpty(geb. datum) ;

Year ( Get ( CurrentDate ) ) - Year ( geb. datum)-If ( Get ( CurrentDate ) < Date ( Month ( geb. datum) ; Day ( geb. datum); Year ( Get ( CurrentDate ) ) );1;0 ))+0

 

en deze voor de geschreven versie±

 

GetAsNumber(Year(Get(CurrentDate)) - Year(geb. datum) - Case(Get(CurrentDate)< Date(Month(geb. datum); Day(geb. datum); Year(Get(CurrentDate))); 1; 0)) & " jaren, "

 

&

 

GetAsNumber(Mod(Month(Get(CurrentDate)) - Month(geb. datum) + 12 - Case(Day(Get(CurrentDate)) < Day(geb. datum); 1; 0); 12)) & " maanden, "

 

&

 

GetAsNumber(Day(Get(CurrentDate)) - Day(geb. datum) + Case(Day(Get(CurrentDate)) >= Day(geb. datum); 0; Day(Get(CurrentDate)- Day(Get(CurrentDate))) < Day(geb. datum); Day(geb. datum); Day(Get(CurrentDate)- Day(Get(CurrentDate))))) & " dagen"

 

Misschien heb je hier iets aan

  • 0
Posted

Floor(((Get(HuidigeDatum)-dat 1)/30,416)/12)

& "jaar en " &

 

Round(((Get(HuidigeDatum)-dat 1)/30,416) -

Floor(((Get(HuidigeDatum)-dat 1)/30,416)/12) *12;0)

 

& "maanden"

  • 0
Posted

dank jullie wel voor de reacties. Ik ga me eventjes in verdiepen in jullie oplossingen en zien wat werkt. Van zodra het mij lukt laat ik op het forum mijn oplossing zien. Maar echt super bedankt voor alle hulp!

 

Groeten

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...