On Wed, 2002-12-11 at 04:44, Tom Roos wrote:
> hi
>
> i want to build a query in which i have 2 datetime fields which i subtract
> from one another. what is the result set? is it in (milli)seconds, is it a
> unix timestamp? what type of convertion do i have to apply to report the
> difference in minutes?
I usually convert to unix time (seconds since 1970) then subtract. Then
use sec_to_time to get hours:mins:sec, or convert to a displayable value
in the client software.
select unix_timestamp('2002-12-02 15:30:00') -
unix_timestamp('2002-11-15 21:11:08') as tdiff;
+---------+
| tdiff |
+---------+
| 1448332 |
+---------+
select sec_to_time(unix_timestamp('2002-12-02 15:30:00') -
unix_timestamp('2002-11-15 21:11:08')) as tdiff;
+-----------+
| tdiff |
+-----------+
| 402:18:52 |
+-----------+
Or to get minutes, rather than using sec_to_time, divide by 60.
You can't just subtract the datetime values from each other because
they'll be converted to integers (that is, '2002-12-02 15:30:00' becomes
20021202153000) and then subtraction doesn't work as each place in the
resultant integer doesn't fully hold all digits 0 through 9.
Fortunately, date comparsion (using > and <) still work because the date
is arranged with the most signifcant portion being further left.
Andy.
---------------------------------------------------------------------
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