All:

mysql> SELECT FROM_UNIXTIME("2008-01-08 03:14:07");
+--------------------------------------+
| FROM_UNIXTIME("2008-01-08 03:14:07") |
+--------------------------------------+
| 1969-12-31 19:33:28                  |
+--------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+----------------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: '2008-01-08 03:14:07' |
+---------+------+----------------------------------------------------------+
1 row in set (0.00 sec)

I was actually surprised to find this was the behaviour in MySQL and Drizzle.

Would anyone have a problem if I converted the above to an error? FROM_UNIXTIME() only takes unsigned integers in the range of 0 to INT32_MAX. It doesn't take strings, or strings that "look like numbers", or anything of the sort.

IMHO, the above behaviour is dangerous, as it:

* Implicitly tries to convert a string to an integer (based on the warning)
* Produces an invalid TIMESTAMP value
* Doesn't error, therefore giving the unassuming user the impression that FROM_UNIXTIME() indeed takes string parameters.

Anyone object to me making the above an error?

Cheers,

Jay

_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to