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
来覆盖它。
下面的表达式
$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
来覆盖它。