首页 > 解决方案 > 将时间戳的分钟数设置为特定值

问题描述

设置时间戳的确切分钟值的最简单方法是什么?

这只会增加分钟而不是设置确切的值:

SELECT timestamp_field + interval '2 minutes';

标签: sqlpostgresqldatetimetimestamp

解决方案


date_trunc()在添加 2 分钟之前使用:

SELECT date_trunc('hour', timestamp_field) + interval '2 minutes';

或者,保留秒和亚秒:

SELECT date_trunc('hour', timestamp_field)
     + interval '2 min'
     + extract('seconds' FROM timestamp_field) * interval '1 sec';

演示:

test=> SELECT now()
test-> UNION ALL
test-> SELECT date_trunc('hour', now())
test->      + interval '2 min'
test->      + extract('seconds' FROM now()) * interval '1 sec';
              now              
-------------------------------
 2021-03-23 03:59:57.373279+01
 2021-03-23 03:02:57.373279+01
(2 rows)

应该比操作文本表示和回退快得多。


推荐阅读