首页 > 解决方案 > Postgresql:将时间四舍五入到最近的 15 分钟范围(0,15,30,45)

问题描述

从这篇文章的回答中,我date_time::timestamp - INTERVAL '1 HOUR'在 select 语句中有一个 datetime 列。

我想要做的是,我想创建一个 15 分钟范围的间隔 (0, 15,30,45) 所以,结果应该是 2019-04-21 09:00:00 或 2019-04- 21 09:15:00 以此类推。结果应更改为最接近的时间,即 00:00 至 07:29 分钟将向下舍入为 00:00,07:30 至 15:00 将向上舍入为 15:00。这适用于 15、30还有45个

所以从2019-04-21 09:52:29应该成为2019-04-21 09:45:00并且2019-04-21 09:52:30应该成为2019-04-21 10:00:00

我已经搜索并找到了date_trunc功能,但我不知道如何根据我的具体情况去做。

谢谢!

编辑:我查看了重复的帖子和一些答案。我找到了使用 dateadd 和 datediff 函数的答案,但这些函数不能与 postgresql 一起使用。

select dateadd(minute, datediff(minute,0,GETDATE()) / 15 * 15, 0)

如何将此应用于 postgresql ?

Edit2:有一些解决方案使用创建函数来向上和向下舍入,但上面的要好得多。

标签: sqlpostgresql

解决方案


推荐阅读