四舍五入到最近的十分钟 - Snowflake/SQL

Round off to the nearest ten minutes - Snowflake/SQL

在 Snowflake/SQL 中将时间戳四舍五入到最接近十分钟的最佳方法是什么?谢谢

转换为自纪元以来的秒数,ROUND(),并转换回 TIMESTAMP

SELECT TO_TIMESTAMP(ROUND(EXTRACT(EPOCH_SECOND FROM CURRENT_TIMESTAMP)/(10*60))*(10*60));

=> 2019-12-04 07:10:00.000

(上面的查询是 运行 在 07:13 UTC)

请注意,您可以使用 TO_TIMESTAMP_[L]TZ() 转换回本地时区,但通常无法正确调整 TIMESTAMP_TZ不是您当地的时区,因为调整意味着夏令时的变化。然后你必须知道 TIMESTAMP_TZ 起源的时区的名称,这样你就可以 CONVERT_TIMEZONE() 调整后的值到正确的偏移量。

但是当我的会话时区是 Europe/Oslo:

时这有效
SELECT TS, TO_TIMESTAMP_TZ(ROUND(EXTRACT(EPOCH_SECOND FROM TS)/(10*60))*(10*60)) RTS
FROM (SELECT TIMESTAMP_TZ_FROM_PARTS(2020, 3, 29, 1, 59, 59 , 0, 'Europe/Oslo') TS);

=> 2020-03-29 01:59:59.000 +0100      2020-03-29 03:00:00.000 +0200