在Symfony2(Doctrine)和MySQL中启用微秒

Ser*_*gri 5 php mysql datetime symfony doctrine-orm

我有一个实体,其中有一列"datetime"类型来存储时间戳.

/**
 * @ORM\Column(type="datetime")
 */
protected $timestamp;
Run Code Online (Sandbox Code Playgroud)

我有MySQL 5.5.40,我发现它不存储微秒.所以我切换到5.6.21并导入了所有表格和数据.

我试图将类型声明为

 * @ORM\Column(type="datetime(6)")
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误.所以我通过以下方式直接在DB中更改了它:

ALTER TABLE symfony.hrmgmt MODIFY timestamp DATETIME(6);
Run Code Online (Sandbox Code Playgroud)

在我的控制器中我这样做:

  $dt = new \DateTime('now');
  $newHREvent->setTimestamp($dt);
Run Code Online (Sandbox Code Playgroud)

但是,时间戳存储的时间没有秒.

我可以(现在)通过SQL手动输入带小数值的datetime,但是当我通过我的控制器执行它时,它总是以.000000存储

我想这是因为Doctrine不知道它也可以存储微秒.

我的PHP版本仍然是5.4.34.

谢谢!

got*_*oto 1

要创建微秒的日期时间,您必须DateTime::createFromFormat在控制器中使用

$date = \DateTime::createFromFormat('U.u', (string)microtime(true));
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,我的回答是针对你的评论。我的意思是 `new \DateTime('now');` 自 PHP 7 以来存储微秒。编辑:我的错,PHP 7.1。 (2认同)