> Michael Stassen wrote:
> <snip>
> > Second, no, it won't overflow:
> >
> >   mysql> SELECT SEC_TO_TIME(60*60*24*5);
> >   +-------------------------+
> >   | SEC_TO_TIME(60*60*24*5) |
> >   +-------------------------+
> >   | 120:00:00               |
> >   +-------------------------+
> >   1 row in set (0.00 sec)
> >
> >   mysql> SELECT SEC_TO_TIME(60*60*24*50);
> >   +--------------------------+
> >   | SEC_TO_TIME(60*60*24*50) |
> >   +--------------------------+
> >   | 1200:00:00               |
> >   +--------------------------+
> >   1 row in set (0.00 sec)
> >
> > SEC_TO_TIME() is not limited to 24 hours.
> >
>
> I should have added that the limits of a TIME column are documented in the
> manual <http://dev.mysql.com/doc/refman/4.1/en/time.html>:
>
>    TIME values may range from '-838:59:59' to '838:59:59'. The reason for
>    which the hours part may be so large is that the TIME type may be used
>    not only to represent a time of day (which must be less than 24 hours),
>    but elapsed time or a time interval between two events as well. (Note
>    that this interval may be much greater than 24 hours, or even
negative.)

That's actually a very weird definition for a TIME datatype :-)

It should have an "interval" datatype for such operations.

> So some care may be needed if you will be storing the result, because
> SEC_TO_TIME() can return a time outside of a TIME column's allowable
range.

With regards,

Martijn Tonies
Database Workbench - tool for InterBase, Firebird, MySQL, Oracle & MS SQL
Server
Upscene Productions
http://www.upscene.com
Database development questions? Check the forum!
http://www.databasedevelopmentforum.com


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to