MySQL 5.6からミリ秒の取り扱いが変わった
バージョンによって挙動が異なるので注意が必要です。 MySQL 5.5 までは、強制的に切り捨てされて格納、MySQL 5.6 以降は四捨五入されて格納されるという動作になっています。
以下、実験ログ
ysql> CREATE TABLE fractest( c1 TIME(2), c2 DATETIME, c3 TIMESTAMP(2) ); Query OK, 0 rows affected (0.04 sec) mysql> INSERT INTO fractest VALUES ('17:51:04', '2018-09-08 17:51:04.499', '2018-09-08 17:51:04'); Query OK, 1 row affected (0.03 sec) mysql> INSERT INTO fractest VALUES ('17:51:04', '2018-09-08 17:51:04.500', '2018-09-08 17:51:04'); Query OK, 1 row affected (0.03 sec) // 2つめのレコードのみ、小数点第一位が四捨五入された mysql> select * from fractest; +-------------+---------------------+------------------------+ | c1 | c2 | c3 | +-------------+---------------------+------------------------+ | 17:51:04.00 | 2018-09-08 17:51:04 | 2018-09-08 17:51:04.00 | | 17:51:04.00 | 2018-09-08 17:51:05 | 2018-09-08 17:51:04.00 | +-------------+---------------------+------------------------+ 2 rows in set (0.00 sec)