Если у вас mysql 5.6 и выше используйте это:
`updated` = NOW(3)
Если ниже, придется задавать через php.
Немного теории:
mysql> CREATE TABLE fractest( c1 TIME(2), c2 DATETIME(2), c3 TIMESTAMP(2) );
Query OK, 0 rows affected (0.33 sec)
mysql> INSERT INTO fractest VALUES
> ('17:51:04.777', '2014-09-08 17:51:04.777', '2014-09-08 17:51:04.777');
Query OK, 1 row affected (0.03 sec)
mysql> SELECT * FROM fractest;
+-------------+------------------------+------------------------+
| c1 | c2 | c3 |
+-------------+------------------------+------------------------+
| 17:51:04.78 | 2014-09-08 17:51:04.78 | 2014-09-08 17:51:04.78 |
+-------------+------------------------+------------------------+
1 row in set (0.00 sec)
Обратите внимание как заданы типы данных TIME(2). Цифра в скобках означает количество символов после точки в итоге. Поддерживается до 6 цифр(микросекунды)
Также можно получить текущюю дату с точностью до микросекунд, пример:
SELECT NOW(6);
Это работает начиная с mysql 5.6.
В mysql 5.5 дату нужно хранить в таком же формате до 6 цифр после точки в виде строки, получить текущюю дату с точностью больше секунд нельзя. Единственное что есть в эту сторону это функция MICROSECOND. Она позволяет выделить дробную часть из строки с датой.
SELECT MICROSECOND('2010-12-10 14:12:09.019473');