Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Precision in DateTime Arithmetic
Message
De
29/11/2012 18:53:31
 
 
À
29/11/2012 18:45:46
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows 7
Divers
Thread ID:
01558431
Message ID:
01558434
Vues:
79
>Suppose you have 2 different datetime values t1 and t2.
>
>If you subtract them e.g. t2 - t1, you get the time difference in seconds. Actually it seems to be the FLOOR() of the difference i.e.
>
>- anything less than 1 second returns 0
>- anything less than 2 seconds, but greater to or equal to 1 second, returns 1
>- etc.
>
>My understanding is that as an 8-byte type, DateTime values are stored with considerable precision, of the order of about 10 milliseconds (?) Is there any way to calculate differences with more precision?
>
>I understand SECONDS() can be used to get more precision, but what I'm dealing with are DateTime values stored in tables.


If you look here: https://github.com/RickCHodgin/SaveToParser

You'll find an app which can parse a VFP "SAVE TO file" memory dump. One of its abilities is to parse a datetime field. The source code is here:
https://github.com/RickCHodgin/SaveToParser/blob/master/SaveToParser/SaveToParser.cpp

The code in C/C++ to extract the components of a datetime variable begin around line 492.

You can see from the functions immediately below that code how it is extracted.

It uses a 64-bit floating point format when stored to a disk file. If it is the same in VFP then you could convert it using similar code through a custom DLL, or clever use of the printf() functions.

You could also create a VFP function which does a SAVE TO file.mem LIKE varname, and just save that one, parse it in the disk file, read in the disk file, and get your milliseconds value that way. Hacky, but the code is already there to make that work.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform