"Haisam K. Ido" <[EMAIL PROTECTED]> wrote on 07/06/2005 02:35:54 PM:

> I want to store a date of this format
> 
>    yyyymmddhhmmss.ssssss
> 
> Should I use DOUBLE as the data type?  Yes I do need all the .sss's.  Or 

> should I use DATETIME and then have another column to store the fraction 

> of seconds?
> 
> 
> 
> 

For me, how this data would be stored would depend on what you will need 
it for later. My first idea is to convert the yyyymmddhhnnss portion to an 
integer using UNIX_TIMESTAMP() and add that integer value to your .ssssss 
information to create and store the value as a double. That way you can do 
direct subtraction to get the difference between any two times in seconds 
or fractions of a second (as everything will be in the same unit).

If you leave it as a packed number, you will get some very odd results if 
you try to do direct math on the value. Look at the mathematical 
representation of the difference between two time values just one second 
apart:

2005-07-06 12:01:59 packs as 20050706120159
2005-07-06 12:02:00 packs as 20050706120200

If we subtract those two values we get the value 41 not 1 as we might 
want. However, if we first convert them through UNIX_TIMESTAMP(), 
everything works as expected:

UNIX_TIMESTAMP('2005-07-06 12:01:59') = 1120665719
UNIX_TIMESTAMP('2005-07-06 12:02:00') = 1120665720

The difference between those two values is only 1 (second). IMHO, makes 
this a much more convenient way to do "time math". Will this work for what 
you need?

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine



Reply via email to