Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Finding the payperiod that included 12th of month
Message
De
17/07/2006 19:21:42
Dragan Nedeljkovich
Now officially retired
Zrenjanin, Serbia
 
 
À
17/07/2006 19:18:40
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Visual FoxPro:
VFP 7 SP1
OS:
Windows XP SP2
Network:
Windows 2000 Server
Database:
Visual FoxPro
Divers
Thread ID:
01137078
Message ID:
01137101
Vues:
21
>>>>So... let me think. Q&D solution:
>>>>
>>>>
* try with 12th of the first date's month
>>>>d12=date(year(d1), month(d1), 12)
>>>>*-- if first date is past 12th, use 12th of the second date
>>>>if d12<d1
>>>>  d12=date(year(d2), month(d2), 12)
>>>>endif
>>>>scan for between(d12, d1, d2)
>>>>  && do stuff here
>>>>endscan
>>>
>>>I think this would work (uses Julian date):
>>>
>>>
BETWEEN(SYS(11,DATE(YEAR(PpBeg),MONTH(PpBeg),12)),SYS(11,PpBeg),SYS(11,PpEnd)) ;
>>   OR BETWEEN(SYS(11,DATE(YEAR(PpEnd),MONTH(PpEnd),12)),SYS(11,PpBeg),SYS(11,PpEnd))
>>
>>I was also tempted to make it a one-liner but resisted it for clarity's sake. Payroll report never hinges on a couple of milliseconds more or less.
>
>I didn't realize how big this would be until after I posted it. I built it up with a cut & paste of the two parts. Thanks for making it more readable.

As we said in some other thread once, readability is in the eye of the beholder :).
between(date(year(iif(day(d1)<=12, d1, d2)), month(iif(day(d1)<=12, d1, d2)), 12), d1, d2)
is an equivalent one-liner I had in mind... which I wouldn't like to see in my code. Just a matter of taste.

back to same old

the first online autobiography, unfinished by design
What, me reckless? I'm full of recks!
Balkans, eh? Count them.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform