如何在Extbase存储库中比较DateTime

qua*_*lle 7 typo3 extbase

我尝试将事件的开始日期与当前日期进行比较,以便仅显示下一个事件.这是我在eventRepository中的尝试:

public function findNext() {
    $query = $this->createQuery();
    $query->matching(
        $query->greaterThanOrEqual('datum_beginn', new \DateTime('midnight'))
    );
    return $query->execute();
}
Run Code Online (Sandbox Code Playgroud)

但结果并不像预期的那样.这是结果查询:

SELECT events.* FROM events WHERE events.datum_beginn >= 1413669600 AND ...
Run Code Online (Sandbox Code Playgroud)

如您所见,DateTime被转换为时间戳.如何在查询中使用MySQL NOW()或正确使用DateTime?

bie*_*ior 15

使用日期的字符串值:

public function findNext() {
    $query = $this->createQuery();
    $date = new \DateTime('midnight');
    $query->matching(
        $query->greaterThanOrEqual('datum_beginn', $date->format('Y-m-d H:i:s'))
    );

    return $query->execute();
}
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用(Extbase 6.2).我不得不使用$ date-> getTimestamp()代替. (4认同)
  • 实际上,这取决于哪种格式存储在DB中,它可能是unix时间戳或MySQL时间戳... OP有问题,因为他使用第二种格式,所以将它与unix时间戳(`$ date-> getTimestamp()`)进行比较没有意义 (4认同)