【问题标题】:Convert Postgres interval to PHP DateInterval将 Postgres 间隔转换为 PHP DateInterval
【发布时间】:2019-02-01 08:48:59
【问题描述】:

我正在将一个值保存到 Postgres10 interval 类型字段中。

当我返回该字段时,我得到以下信息:3 years 10 mons 1 day 02:18:00

我似乎遇到的主要问题是,如果持续时间不是几年和几个月,它也会返回 1 day 02:18:00

有没有一种干净的方法可以将此值转换为 PHP DateInterval 对象?

我想我可以使用正则表达式,但这对我来说似乎有点乱。

【问题讨论】:

  • mons?那是对的吗?你的意思是代码应该考虑非标准词?
  • 这是数据库字段值的直接副本,是的。

标签: php postgresql date dateinterval


【解决方案1】:

如果您使用

将间隔输出样式更改为 iso_8601
SET intervalstyle = 'iso_8601';

您将获得正确格式的输出,以便调用DateInterval::__construct,例如

SELECT
 INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second';

输出:

interval
P6Y5M4DT3H2M1S

Demo on dbfiddle

【讨论】:

  • 我正在使用 Symfony 和 Doctrine。有关如何处理此问题的任何建议?
  • @Wildcard27 我不太了解 Symfony/Doctrine。但是你不能只运行一个查询来设置变量,然后在包含间隔的表上运行你的查询吗?
  • 你可以使用Pomm Interval converter
猜你喜欢
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 2020-07-26
  • 2021-04-05
相关资源
最近更新 更多