PHP 日期时间对象输出尾随零,影响对 MySQL 日期时间的查询

PHP Datetime object outputs trailing zeroes, affects query against MySQL datetime

下面的表达式

$datetime = new \DateTime('2016-06-02 19:30:17', new \DateTimeZone('America/Tijuana'));
$datetime->setTimezone(new \DateTimeZone('GMT'));

正在返回 2016-06-03 02:30:17.000000(请注意,它正在输出 0,但输入中不存在)。

因此在 Yii2 的查询构建中,由于尾随 0,无法进行如下针对 db datetime 列的查询。

->andFilterWhere(['created_at' => $this->datetime->format('php:Y-m-d H:i:s')]);

为什么 datetime 对象首先输出 0?

我想与 BETWEEN 或像 >= 这样的操作数进行比较可能会,有什么想法吗?

这些是默认生成的微秒,因为默认格式是 Y-m-d H:i:s.u。如果需要,您可以通过指定 Y-m-d H:i:s 来覆盖它。