postgres演员|将interval转换为iso_8601格式

时间:2016-01-22 13:37:56

标签: php postgresql datetime iso8601

在pg月份可能是'星期一'或'月'在php'星期一'是星期一。

myinterval是db上的间隔列。

如何制作pg输出

`SELECT myinterval FROM table` = 1 year 6 mons

`SELECT myinterval FROM table` = P1Y6M

我读到了intervalstyle,但我使用的是现有代码,所以我不会弄乱一些行,而对于整个会话,intervalstyle会改变

1 个答案:

答案 0 :(得分:1)

很抱歉这么晚才回答这个问题,但我在旧版代码库中遇到了同样的问题。我通过使用事务并设置事务持续时间的间隔样式来解决此问题:

BEGIN;

SET LOCAL intervalstyle = 'iso_8601';
SELECT (INTERVAL '6 years 5 months 4 days 3 hours 2 minutes 1 second')::text;

COMMIT;

这将输出P6Y5M4DT3H2M1S

如果我此后直接运行它:

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

然后我得到6 years 5 mons 4 days 03:02:01

因此,会话的间隔样式不受影响。