Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
BUG: int() returning wrong values from datetime operatio
Message
 
To
20/10/2005 06:20:16
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
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:
01060883
Views:
33
>>>>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,

Actually, VFP rounds values to the nearest second and doesn't save the original values.

As I learned with my dealings with SQL Server over the past two days, there are some limitations with even its comparisons.

From what I can see, SQL Server 2000, has a resolution of +/- 2 milliseconds. If the difference is less than that, it treats them as if they were equal.

I assumed that because VFP stored datetimes in 8 bytes that it would correspond to either the SYSTEMTIME or FILETIME structures of Windows. Even those structure, which are both made up of 8 8 byte integers, don't take the resolution below one millisecond.
George

Ubi caritas et amor, deus ibi est
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform