Basil Hussain wrote:
> 
> Hi,
> 
> >> mysql> SELECT impression, click, click - impression AS diff, DATE_SUB(click,
> >> INTERVAL click - impression SECOND) AS calc FROM eventlog;
> >> +---------------------+---------------------+------+---------------------+
> >> | impression          | click               | diff | calc                |
> >> +---------------------+---------------------+------+---------------------+
> >> | 2001-02-22 12:07:03 | 2001-02-22 12:09:04 |  201 | 2001-02-22 12:05:43 |
> >> | 2001-02-22 12:14:39 | 2001-02-22 12:14:44 |    5 | 2001-02-22 12:14:39 |
> >> | 2001-02-22 12:16:13 | 2001-02-22 12:16:17 |    4 | 2001-02-22 12:16:13 |
> >> +---------------------+---------------------+------+---------------------+
> >> 3 rows in set (0.00 sec)
> 
> >> As you can see, the difference between the two dates on the first record is
> >> clearly 2 minutes, 1 second - which works out as 121 seconds. However, MySQL
> >> thinks it's 201 seconds, which is actually 3 minutes 21 seconds - wrong!
> 
> > 2 min and 1 sec, like 0201 ?
> 
> Ah, now I see why it's "201"! Just to check it's not a coincidence though, I
> got MySQL to calculate the difference between now and 60 seconds ago:
> 
> mysql> SELECT NOW() - DATE_SUB(NOW(), INTERVAL 60 SECOND) AS calc;
> +------+
> | calc |
> +------+
> |  100 |
> +------+
> 1 row in set (0.00 sec)
> 
> So, this makes sense, according to the above.
> 
> But, the question remains - why the hell does MySQL return the result of the
> subtraction/addition in this format? It's completely un-intelligable. I
> probably would have guessed if it was "0201" or "000201", but it's just
> stupid how it does it. To prove this, I just did another test:
> 
> mysql> SELECT NOW() - DATE_SUB(NOW(), INTERVAL 7 MONTH) AS calc;
> +------------+
> | calc       |
> +------------+
> | 9500000000 |
> +------------+
> 1 row in set (0.00 sec)
> 
> What the hell is "9500000000" supposed to represent? Can anyone explain the
> rational behind this?
> 
> Anyway, this is clearly not gonna be suitable for subtracting/adding dates,
> so I suppose I'll have to resort to something ugly like converting each date
> to a timestamp before subtracting.
> 
> Regards,
> 
> ------------------------------------------------
> Basil Hussain ([EMAIL PROTECTED])

select now()-0, and you will see the answer is YYYYMMDDhhmmss.
Now, represent 2 dates as strings of 14 numeric characters,
and subtract them as numbers.
Does it mean anything? Well, since the numbering system changes  about 5
times as you move from left to right through the string, and the math is 
done base 10, I think it would be difficult to make much sense of the
result.

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to