如何解决使用学说查询时从 PostgresDB 获取错误的日期错误的偏移量
我对 Symfony 和 Doctrine 中的 tz(时区)和日期类型完全感到困惑。 我们使用 Symfony 5 和 Postgressql 作为数据库。在数据库中,我们对所有日期使用时间戳记,在实体中,我们将所有日期都定义为 datetimetz。
@ORM\Column(type="datetimetz",nullable=true)
当我们使用学说查询构建器 (createquery) 创建查询时,我们总是会丢失数据库中保存的偏移量(时区)。示例:在我们的数据库中:
Date: 2021-05-10 00:06:35
Offset: 2.0
作为查询的结果,我们得到:
[date] => 2021-05-09 22:06:35.000000
[timezone_type] => 1
[timezone] => +00:00
顺便说一句:我们在使用存储库 (getRepository) 而不是直接查询时得到了相同的结果。
我的问题:我的日期在哪里转换,为什么?是在数据库站点还是在 PHP 级别?
顺便说一句。 2:数据库默认偏移设置为Europe/Berlin,PHP端也设置为date_default_timezone_set。
解决方法
postgres 中带有 timezones TZ 的质量不是拥有它,而是在完整环境中处理它。特别是在 Symfony(PHP) 中,我们需要将保存的时区添加到每个日期。
写作示例:
$booking->setUpdated(new \DateTime('now',new \DateTimeZone('Europe/Berlin')));
阅读示例:
date_timezone_set(@$this->getInserted(),timezone_open('Europe/Berlin'));
这就是我的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。