【发布时间】:2022-01-15 02:28:06
【问题描述】:
我正在使用以下查询生成一个时间序列。
SELECT date_trunc('min', dd):: TIMESTAMP WITHOUT TIME zone as time_ent
FROM generate_series ( timestamp '2021-12-09 06:34:37' + ((DATE_PART('min', timestamp '2021-12-09 06:34:37')::integer % 2) || ' minutes') :: INTERVAL
, '2021-12-10 06:34:37'::timestamp
, '20 min'::interval) dd
它会给我如下输出。
2021-12-09 06:34:00.000
2021-12-09 06:54:00.000
2021-12-09 07:14:00.000
2021-12-09 07:34:00.000
但我需要类似的输出。
2021-12-09 06:40:00.000
2021-12-09 07:00:00.000
2021-12-09 07:20:00.000
2021-12-09 07:40:00.000
目前,时间序列小时数取决于我通过的时间戳。在上面它给了我像 34,54,14 这样的分钟......但我想要像 40,00,20 这样的分钟......它不应该取决于我通过查询的时间。我尝试使用 timestamp '2021-12-09 06:34:37' + ((DATE_PART('min', timestamp '2021-12-09 06:34:37')::integer % 2) || 'minutes') :: INTERVAL 但没有成功。
【问题讨论】:
-
您能描述一下您的具体要求吗?如果输出不应该依赖于您传递的输入,为什么它应该从
2021-12-09 06:40:00.000生成系列? -
因为输入是当前时间戳,但我需要当前时间戳之后的时间序列,如 0,20,40 间隔
标签: sql postgresql