"Michael T. Babcock" <[EMAIL PROTECTED]> wrote,

> But MySQL doesn't guarantee correctness in time values in the first
> place.  You can still insert "2002-02-31" as a date if you like

If you store a date in the database as a unix_timestamp in an unsigned int
column, and retrieve the value using the inverse function, errors of this
kind are self-correcting:

mysql> select unix_timestamp('2002-02-31');
+------------------------------+
| unix_timestamp('2002-02-31') |
+------------------------------+
|                   1015135200 |
+------------------------------+
1 row in set (0.51 sec)

mysql> select from_unixtime(1015135200);
+---------------------------+
| from_unixtime(1015135200) |
+---------------------------+
| 2002-03-03 00:00:00       |
+---------------------------+
1 row in set (0.03 sec)


Maybe you don't want this kind of thing happening silently; in such a case
you must validate the date in the API you're using before submitting the
query.

Another benefit of using unix_timestamps: daylight saving time/standard time
issues are handled, because the unix_timestamps always relate to GMT. Date
comparisons thus can take into account time-zone offset.

-- Bruce


---------------------------------------------------------------------
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