Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
BUG: int() returning wrong values from datetime operatio
Message
From
20/10/2005 06:20:16
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
 
To
19/10/2005 13:11:59
General information
Forum:
Visual FoxPro
Category:
Other
Environment versions
Visual FoxPro:
VFP 9
OS:
Windows XP SP2
Network:
Windows 2000 Server
Miscellaneous
Thread ID:
01058678
Message ID:
01060630
Views:
26
>>>You're welcome. One note about saying stores milliseconds. Actually not storing it as milliseconds but it's a real number keeping time as a fraction (terminology differs but result is same technically).
>>>Cetin
>>
>>As a mather of fact, it IS stored in a millisecond format in the DBF. When it is used in memory it is in an floating-point format, giving rise to some rounding artifacts.
>>
>>(for the complete specs of how it is written to disk see my message in the newsgroup microsoft.public.fox.vfp.dbc on 22 jun 2003)
>
>On dbf:
>
>* someDatatetime
>BINTOC(VAL(SYS(11,someDatatetime)),"RS"),BINTOC(Daymsec(someDatatetime),"RS")
>
>
>On memory:
>
>floatvalue=VAL(SYS(11,someDatatetime))+DaySec/86400
>
>The problems are born because 1/86400 cannot be represented in base2.
>
>Only datetimes with DaySec=k*675 they are exactly stored on memory.

Yes, I never understood the reasoning behind it to store milliseconds. In memory it could be:
floatvalue=VAL(SYS(11,someDatatetime))+DaySec
and there would be still space for a wider range of datetimes.
Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform