postgres cast |将间隔转换为iso_8601格式

问题描述 投票:1回答:1

在pg月中可以是'mon'或在php中的'month','mon'是星期一。

myinterval是数据库上的间隔列。

如何进行pg输出

`SELECT myinterval FROM table` = 1 year 6 mons

to

`SELECT myinterval FROM table` = P1Y6M

我读过intervalstyle,但是我使用现有代码,所以我不能弄乱某些行,而intervalstyle会在整个会话中改变

php postgresql datetime iso8601
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.