0

是否有 Postgres 时间间隔格式化程序将年龄显示为3y, 4mo, 2w, 6d, 7h, 55m, 24s, now and so on?类似于 Reddit 如何显示帖子/评论的年龄?

我的时间戳列的数据类型如下:

api_created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()

我可以通过以下方式获取此时间戳的年龄now()

select age(now(),api_created_at) from post;

这给出2019-09-04 10:04:19.882688+01了:

2 days 23:36:45.27627

我需要这个年龄作为类似于 reddit 的更友好的字符串。是否有内置的格式化程序?还是我可以使用的自定义功能?

编辑:我需要它使它“四舍五入”/地板/天花板?就像 reddit 简单地说“3d”而不是“3d 23m 55s”。因此,与其说 1d 2h,不如说 1d。

4

1 回答 1

0

您可以to_char()为此使用:

select to_char(age(timestamp '2019-09-07 10:53:14', timestamp '2019-09-04 10:04:19'), 
               'yy"y" mm"mo" dd"d" mm"m" ss"s"')

返回

00y 00mo 03d 00m 55s
于 2019-09-07T09:01:27.613 回答