Netezza 中 5 分钟的时间间隔

问题描述

我有一个日期时间列,我必须创建一个新列,它将为我提供 5 分钟的日期和时间间隔。 (它是一个 Netezza 平台)

Transaction Time    Interval - 5 Min(Expected Output)
2/1/2021 8:46   8:45:00 AM
2/1/2021 8:46   8:45:00 AM
2/1/2021 8:46   8:45:00 AM
2/1/2021 8:46   8:45:00 AM
2/1/2021 8:46   8:45:00 AM
2/1/2021 8:46   8:45:00 AM
2/1/2021 9:24   9:20:00 AM
2/1/2021 9:24   9:20:00 AM
2/1/2021 9:24   9:20:00 AM
2/1/2021 9:24   9:20:00 AM
2/1/2021 9:24   9:20:00 AM
2/1/2021 9:24   9:20:00 AM
2/1/2021 9:24   9:20:00 AM
2/1/2021 9:24   9:20:00 AM
2/1/2021 11:40  11:40:00 AM
2/1/2021 12:54  12:50:00 PM
2/1/2021 13:03  1:00:00 PM
2/1/2021 13:28  1:25:00 PM
2/1/2021 14:15  2:15:00 PM
2/1/2021 14:26  2:25:00 PM
2/1/2021 14:26  2:25:00 PM
2/1/2021 14:51  2:50:00 PM
2/1/2021 15:28  3:25:00 PM
2/1/2021 15:28  3:25:00 PM

解决方法

这是使用 mod

的方法
select 
   transaction_time
    to_char(
     transaction_time - interval '1 min' * mod(
       date_part('minute',transaction_time),5),'HH:MI:SS AM') 
            as "5 min boundary" from tab;

  TRANSACTION_TIME   | 5 min boundary
---------------------+----------------
 2021-02-01 08:46:00 | 08:45:00 AM
 2021-02-01 08:46:00 | 08:45:00 AM
 2021-02-01 08:46:00 | 08:45:00 AM
 2021-02-01 08:46:00 | 08:45:00 AM
 2021-02-01 08:46:00 | 08:45:00 AM
 2021-02-01 08:46:00 | 08:45:00 AM
 2021-02-01 09:24:00 | 09:20:00 AM
 2021-02-01 09:24:00 | 09:20:00 AM
 2021-02-01 09:24:00 | 09:20:00 AM
 2021-02-01 09:24:00 | 09:20:00 AM
 2021-02-01 09:24:00 | 09:20:00 AM
 2021-02-01 09:24:00 | 09:20:00 AM
 2021-02-01 09:24:00 | 09:20:00 AM
 2021-02-01 09:24:00 | 09:20:00 AM
 2021-02-01 11:40:00 | 11:40:00 AM
 2021-02-01 12:54:00 | 12:50:00 PM
 2021-02-01 13:03:00 | 01:00:00 PM
 2021-02-01 13:28:00 | 01:25:00 PM
 2021-02-01 14:15:00 | 02:15:00 PM
 2021-02-01 14:26:00 | 02:25:00 PM
(20 rows)
,

一种常用的方法如下:

  • 将日期/时间转换为纪元时间(自 1970-01-01 以来的秒数)。
  • 四舍五入为五分钟(算术)。
  • 转换回时间戳。

代码其实没有那么复杂:

select to_timestamp(floor(extract(epoch from transaction_time) / (5*60)) * 5*60 )
,
select to_char(YOUR_COL,'HH:' || extract(minutes from YOUR_COL) / 5 * 5 || ' AM');

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...