У меня есть объект с одним столбцом типа "datetime" для хранения метки времени.
/** * @ORM\Column(type="datetime") */ protected $timestamp;
У меня был MySQL 5.5.40, и я обнаружил, что он не хранит микросекунды. Поэтому я переключился на 5.6.21 и импортировал все мои таблицы и данные.
Я попытался объявить тип как
* @ORM\Column(type="datetime(6)")
но это дало мне ошибку. Поэтому я изменил его непосредственно в БД, выполнив:
ALTER TABLE symfony.hrmgmt MODIFY timestamp DATETIME(6);
В моем контроллере я делаю это:
$dt = new \DateTime('now'); $newHREvent->setTimestamp($dt);
Но тем не менее временная метка сохраняется без долей секунды.
Я могу (сейчас) вручную вводить datetime с дробными значениями через SQL, но когда я делаю это через свой контроллер, он всегда хранит с .000000
Полагаю, это потому, что Doctrine не знает, что он может хранить и микросекунды.
Моя версия PHP по-прежнему остается 5.4.34.
Спасибо!
Чтобы создать дату-время с микросекундой, вы должны использовать DateTime::createFromFormat
в своем контроллере
$date = \DateTime::createFromFormat('U.u', (string)microtime(true));